Mathematica, 237 byte
n={-1,1}#&;c_~g~s_:=Polygon[c+s#&/@{k={12,9},m=n@k,t={0,-12}}];p={#,#2~g~1,#3~g~-1}&;a=p[Cyan,#-k,#+m]&;b=p[Blue,#-t,#+k]&;c=p[Red,#-m,#+t]&;Graphics@{{a@#,b@#,c@#}&/@{j=4k,s=4{4,9},n@s,4m,r={-32,8},q=-4{4,5},4t,n@q,n@r},a@j,b@s,c@j,c@s}
Versione più facile da leggere:
1 n = {-1, 1} # &;
2 c_~g~s_ := Polygon[c + s # & /@ {k = {12, 9}, m = n@k, t = {0, -12}}];
3 p = {#, #2~g~1, #3~g~-1} &;
4 a = p[Cyan, # - k, # + m] &;
5 b = p[Blue, # - t, # + k] &;
6 c = p[Red, # - m, # + t] &;
7 Graphics@{
8 {a@#, b@#, c@#} & /@
9 {j = 4 k, s = 4{4, 9}, n@s, 4 m, r = {-32, 8},
10 q = -4{4, 5}, 4 t, n@q, n@r},
11 a@j, b@s, c@j, c@s}
La linea 1 definisce una funzione n
che nega la prima coordinata di una coppia ordinata. La linea 2 definisce una funzione g
che produce un triangolo (approssimativamente) equilatero centrato nel punto c
e rivolto verso il basso o verso l'alto a seconda che s
sia 1
o -1
. Linea 3 definisce p
per essere un modello parallelogramma composto da un colore e due triangoli, e le linee 4-6 definire a
, b
e c
di essere i tre diversi tipi specifici di parallelogrammi che appaiono nei cubi.
La linea 8 definisce una funzione {a@#, b@#, c@#}&
che disegna un intero cubo centrato nel punto #
; le linee 9 e 10 lo applicano ai nove punti necessari per rendere il triangolo più grande. Questo produce nove cubi, iniziando in alto a destra e andando in senso antiorario, dove i successivi coprono parti dei precedenti. Infine, la linea 11 ridisegna quattro parallelogrammi (in alto a destra nell'immagine) in modo che finiscano per coprire i cubi successivi come dovrebbero. L'output è inferiore: