25

# 输出量

`n`五角大楼订单的图像。必须至少为100px宽和100px长。它可以保存到文件，显示给用户或输出到`STDOUT`。不允许任何其他形式的输出。允许此挑战之前存在的所有图像格式。

# 获奖

3
-1是因为雪花仅具有6倍的对称性！= D

@flawr根据本文，只有约0.1％的雪花实际上具有6倍的对称性……或完全没有对称性。但是，那些具有对称性的雪花除了具有6倍对称性以外，还可以具有3倍对称性：P
TheNumberOne

4

1

TheNumberOne

1

The_Basset_Hound16'Jan

14

# Matlab，226

``````function P(M);function c(L,X,Y,O);hold on;F=.5+5^.5/2;a=2*pi*(1:5)/5;b=a(1)/2;C=F^(2*L);x=cos(a+O*b)/C;y=sin(a+O*b)/C;if L<M;c(L+1,X,Y,~O);for k=1:5;c(L+1,X+x(k),Y+y(k),O);end;else;fill(X+x*F, Y+y*F,'k');end;end;c(0,0,0,0);end
``````

``````function P(M);
function c(L,X,Y,O);          %recursive function
hold on;
F=.5+5^.5/2;                  %golden ratio
a=2*pi*(1:5)/5;               %full circle divided in 5 parts (angles)
b=a(1)/2;
C=F^(2*L);
x=cos(a+O*b)/C;               %calculate the relative position ofnext iteration
y=sin(a+O*b)/C;
if L<M;                       %current recursion (L) < Maximum (M)? recurse
c(L+1,X,Y,~O);            %call recursion for inner pentagon
for k=1:5;
c(L+1,X+x(k),Y+y(k),O)%call recursion for the outer pentagons
end;
else;                         %draw
fill(X+x*F, Y+y*F,'k');
end;
end;
c(0,0,0,0);
end
``````

Andras Deak 2015年

7

## Mathematica，200个字节

``````a=RotationTransform
b=Range
r@k_:={Re[t=I^(4k/5)],Im@t}
R@k_:=a[Pi,(r@k+r[k+1])/2]
Graphics@Nest[GeometricTransformation[#,ScalingTransform[{1,1}(Sqrt@5-3)/2]@*#&/@Append[R/@b@5,a@0]]&,Polygon[r/@b@5],#]&
``````

Mathematica函数名称很长。有人应该对它们进行熵编码，并从中产生新的语言。:)

6

## MATLAB，235个233 217字节

``````N=input('');f=2*pi/5;c=1.5+5^.5/2;g=0:f:6;p=[cos(g);sin(g)];R=[p(:,2),[-p(2,2);p(1,2)]];for n=1:N,t=p;q=[];for l=0:4,q=[q R^l*[c-1+t(1,:);t(2,:)]/c];end,p=[q -t/c];end,p=reshape(p',5,[],2);fill(p(:,:,1),p(:,:,2),'k');
``````

``````N=input('');                                % read order from stdin

f=2*pi/5;                                   % angle of 5-fold rotation
c=1.5+5^.5/2;                               % scaling factor for contraction

g=0:f:6;
p=[cos(g);sin(g)];                          % starting pentagon, outer radius 1
R=[p(:,2),[-p(2,2);p(1,2)]];                % 2d rotation matrix with angle f

for n=1:N,                                  % iterate the points
t=p;
q=[];
for l=0:4,
q=[q R^l*[c-1+t(1,:);t(2,:)]/c];     % add contracted-rotated points
end,
p=[q -t/c];                             % add contracted middle block
end,

p=reshape(p',5,[],2);                 % reshape to 5x[]x2 matrix to separate pentagons
fill(p(:,:,1),p(:,:,2),'k');          % plot pentagons
``````

1

@flawr显然你是对的：） 1.感谢旋转矩阵，2.感谢new `q`，我什至在其中也有一对不必要的括号... 3.感谢，但这是什么魔术？ 4.由于解决方案现在比您原来的解决方案短，因此我认为这也是您提交的部分内容。
Andras Deak

6

# Mathematica，124个字节

Mathematica `Table`从版本10：开始支持新语法`Table[expr, n]`，该语法节省了另一个字节。 `Table[expr, n]`等同于`Table[expr, {n}]`

``````f@n_:=(p=E^Array[π.4I#&,5];Graphics@Map[Polygon,ReIm@Fold[{g,s}~Function~Join[.62(.62g#+#&/@s),{-.39g}],p,p~Table~n],{-3}])
``````

``````f[4]
``````

1
`π`在UTF-8中占用两个字节，因此总共有125个字节。
2012rcampion

OMFG这是什么
DumpsterDoofus

3

## Mathematica，199 196字节

``````c=CirclePoints;g=GeometricTransformation;
p@0=Polygon@c[{1,0},5];
p@n_:=GraphicsGroup@{
p[n-1],
g[
p[n-1]~g~RotationTransform[Pi/5],
TranslationTransform/@{GoldenRatio^(2n-1),n*Pi/5}~c~5
]
};
f=Graphics@*p
``````

DumpsterDoofus

hYPotenuser 2015年

2

# Mathematica，130个字节

``````r=Exp[Pi.4I Range@5]
p=1/GoldenRatio
f@0={r}
f@n_:=Join@@Outer[1##&,r,p(f[n-1]p+1),1]~Join~{-f[n-1]p^2}
Graphics@*Polygon@*ReIm@*f
``````

`````` %[5]
``````