Mathematica, 237 байт
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}
Более легкая для чтения версия:
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}
Строка 1 определяет функцию, n
которая отрицает первую координату упорядоченной пары. Линия 2 определяет функцию, g
которая создает (приблизительно) равносторонний треугольник с центром в точке c
и направленный вниз или вверх в зависимости от того, s
является ли 1
или-1
. Строка 3 определяетp
в качестве шаблона параллелограмм , состоящий из цветов и двух треугольников, и линии 4-6 определяют a
, b
иc
быть три различных типа конкретных параллелограммов , которые появляются в кубах.
Линия 8 определяет функцию, {a@#, b@#, c@#}&
которая рисует весь куб с центром в точке #
; линии 9 и 10 применяют это к девяти точкам, необходимым для создания большего треугольника. В результате получается девять кубов, начиная с верхнего правого края и заканчивая против часовой стрелки, где более поздние закрывают части предыдущих. Наконец, строка 11 перерисовывает четыре параллелограмма (в верхнем правом углу рисунка) так, чтобы они в конечном итоге покрывали более поздние кубы, как и предполагалось. Выход ниже: