Solution (source code)

= Solution

For an <integer> cell coordinate, occupancy is an existential <predicate>:
$$
\boxed{\operatorname{contains}(W,x,y)\iff
\exists i:\quad y=y_i\ \land\ x_i\le x<x_i+w_i.}
$$
The first occupied unit cell of brick $i$ is at $x_i$, and its last is at $x_i+w_i-1$. Thus the required support <predicate>, with the baseplate explicitly included, is
$$
\boxed{\operatorname{supportive}(W)\iff
\forall i:\quad y_i=0\ \lor\
\left(y_i>0\ \land\
\operatorname{contains}(W,x_i,y_i-1)\ \land\
\operatorname{contains}(W,x_i+w_i-1,y_i-1)\right).}
$$
For width one, the two support cells coincide. For a wider brick, its middle may bridge an empty gap; the question only requires support beneath its two ends. Checking $x_i+w_i$ would incorrectly examine a cell beyond the brick's right end. The potentially infinite baseplate supplies every required support at height zero.<Object Oriented Programming examination paper of the University of Oxford (2015)>[p. 6, Question 3(c), and p. 7, Figure 3]{ref}