Mathematica, 237 bajtów
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}
Wersja łatwiejsza do odczytania:
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}
Wiersz 1 definiuje funkcję, n
która neguje pierwszą współrzędną uporządkowanej pary. Linia 2 definiuje funkcję, g
która tworzy (z grubsza) równoboczny trójkąt wyśrodkowany w punkcie c
i skierowany w dół lub w górę w zależności od tego, czy s
jest 1
lub -1
. Linia 3 określap
się szablon równoległobok składający się z koloru i dwa trójkąty, a linie 4-6 określić a
, b
ic
się trzy różne typy szczególnych z równoległoboków, które pojawiają się w kostki.
Linia 8 definiuje funkcję, {a@#, b@#, c@#}&
która rysuje cały sześcian wyśrodkowany w punkcie #
; wiersze 9 i 10 odnoszą się do dziewięciu punktów potrzebnych do utworzenia większego trójkąta. W ten sposób powstaje dziewięć kostek, zaczynając od prawego górnego rogu i idąc w kierunku przeciwnym do ruchu wskazówek zegara, przy czym kolejne zakrywają części wcześniejszych. Na koniec linia 11 przerysowuje cztery równoległoboki (w prawym górnym rogu obrazu), aby ostatecznie zakryły późniejsze kostki, tak jak powinny. Dane wyjściowe są poniżej: