Sierpinski箭头曲线是一条曲线,极限是Sierpinski三角。
它首先是这样开始的:
_
/ \然后,将每一行替换为第一行的旋转版本:
_
/ \
\ /
_/ \_下一步:
_
/ \
\ /
_/ \_
/ \
\_ _/
_ \ / _
/ \_/ \_/ \
给定一个数n,输出Sierpinski箭头曲线的第n次迭代.
您可以选择0或1索引输入,但请在您的答复中指定.
您可以生成一个图像,或使用Ascii的格式,我已经给出了以上。
您不能使用内置来生成这条曲线。
记住,这是密码-高尔夫,所以字节最少的代码获胜。
发布于 2016-11-22 15:35:34
import Diagrams.Prelude
import Diagrams.Backend.SVG
g n=renderSVG"a"(mkWidth 99).strokeT.a n
a 0=hrule 1
a n|b<-a(n-1)=b%6<>b<>b%(-6);a%n=rotateBy(1/n).reflectY$a::Trail V2 Double生成一个背景透明的svg文件,名为"a“。
g 0输出一条水平线,g 1为/¯\。

发布于 2016-11-19 05:08:14
接受两个函数shapeL,shapeR给出这里,并通过添加一个额外的参数:a来合并它们,后者在被否定时调用相反的函数。
to s :n :a :l
if :n=0[fd :l stop]
rt :a
s :n-1(-:a):l
lt :a
s :n-1 :a :l
lt :a
s :n-1(-:a):l
rt :a
end定义了一个函数s,它需要迭代次数:n (基于1)、角度:a、长度:l.它是递归的,在两个实例中调用一个角度为:a的较低的迭代,以获得正确的方向。
rt :a,lt :a向右旋转海龟(追踪其路径的三角形),左转:a度。fd :l通过:l步骤将海龟向前移动。函数将以:a等于60的形式调用。

在这里,repeat本质上是一个FOR循环,内置计数器repcount。pu和pd的意思是“向上”和“向下”,它们阻止海龟在使用setxy设置位置时画画。
每次迭代的绘图都被调用,长度:l等于power 2 (7-repcount),这是因为定义在递归步骤中使用相同的:l,因此对于固定的:l,输出的总体大小将随:n呈指数增长。
发布于 2016-11-22 18:09:21
基于维基百科文章中的代码。
from turtle import*
def c(o,a):
if o:o-=1;c(o,-a);lt(a);c(o,a);lt(a);c(o,-a)
else:fd(9)
n=input()
if n%2==0:lt(60)
c(n,60)0阶是一条直线。
https://codegolf.stackexchange.com/questions/100359
复制相似问题