Print a physical multiplication table
Haskell, 43 bytes



f n=map=&lt;&lt;flip(map.max)$show.(10^)=&lt;&lt;[1..n]


Try it online!

A clever approach by Ørjan Johansen outputting with 0's and 1's, generating each 10...00 part as the string representation of a power of 10.

111111111
101001000
111111111
101001000
101001000
111111111
101001000
101001000
101001000




Haskell, 49 bytes



f n=map=&lt;&lt;flip(map.max)$[0^i|x&lt;-[1..n],i&lt;-[0..x]]


Try it online!

Generates a pattern like [1,0,1,0,0,1,0,0,0,...], then makes a 2D by taking the min of pairs. The pointfree weirdness saves 2 bytes over the more readable:



f n|l&lt;-do x&lt;-[1..n];0:(1&lt;$[1..x])=[[a*b|a&lt;-l]|b&lt;-l]


Try it online!