Output subdivisions of international standard paper sizes
JavaScript (ES6) + HTML, 96 94 + 34 = 130 128 bytes
f=(n,w=297,h=210)=>n--&&f(n,h<w?w/2:w,h<w?h:h/2,(C=c.getContext`2d`).rect(0,0,w,h),C.stroke())
f(8)
<canvas id=c width=300 height=300>
Mathematica, 87 85 bytes
Thanks @martin for 1 byte.
Graphics@{EdgeForm@Thin,White,Rectangle[#,0{,}]&/@NestList[Sort[#/a]&,{1,a=√2},#]}&
BBC BASIC 49 ASCII characters
Tokenised filesize 44 bytes
I.n:F.i=0TOn:RECTANGLE0,0,1189>>i/2+.5,841>>i/2N.
Much shorter than before! I always forget about the bitshift operators in BBC BASIC for windows as they weren't available on my old computer back in the day.
BBC BASIC 63 ASCII characters
Tokenised filesize 58 bytes
Dowload interpreter at http://www.bbcbasic.co.uk/bbcwin/download.html
A%=841C%=1189d=4I.n:F.i=0TOn:RECTANGLE0,0,C%,A%:d!^B%/=2d=-d:N.
Uses zero indexing, which I prefer. Thus 0 outputs the paper for A0, 1 outputs A0 divided into a pair of A1s, etc.
It is necessary to alternate between halving the X and Y coordinates, but doing that in an array would have cost too many bytes. Instead I use the fact that BBC basic has a block of static integer variables A%..Z%
of 4 bytes each stored in contiguous memory. I store the X and Y values in A%
and C%
and access using the pointer to %B
modified by the value of d, which alternates between 4
and -4
.
Ungolfed
A%=841
C%=1189
d=4
INPUTn
FORi=0TOn
RECTANGLE0,0,C%,A%
d!^B%/=2
d=-d
NEXT
Output