首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绘制Sierpinski箭头曲线

绘制Sierpinski箭头曲线
EN

Code Golf用户
提问于 2016-11-18 19:20:21
回答 6查看 2.7K关注 0票数 15

Introduction

Sierpinski箭头曲线是一条曲线,极限是Sierpinski三角。

它首先是这样开始的:

代码语言:javascript
复制
 _
/ \

然后,将每一行替换为第一行的旋转版本:

代码语言:javascript
复制
  _
 / \
 \ /
_/ \_

下一步:

代码语言:javascript
复制
     _
    / \
    \ /
   _/ \_
  /     \
  \_   _/
 _  \ /  _
/ \_/ \_/ \

您的任务

给定一个数n,输出Sierpinski箭头曲线的第n次迭代.

您可以选择0或1索引输入,但请在您的答复中指定.

您可以生成一个图像,或使用Ascii的格式,我已经给出了以上。

您不能使用内置来生成这条曲线。

记住,这是密码-高尔夫,所以字节最少的代码获胜。

EN

回答 6

Code Golf用户

发布于 2016-11-22 15:35:34

Haskell +图表,176个字节

代码语言:javascript
复制
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/¯\

票数 3
EN

Code Golf用户

发布于 2016-11-19 05:08:14

MSWLogo (版本6.5b),102个字节

接受两个函数shapeLshapeR给出这里,并通过添加一个额外的参数:a来合并它们,后者在被否定时调用相反的函数。

代码语言:javascript
复制
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 :alt :a向右旋转海龟(追踪其路径的三角形),左转:a度。
  • fd :l通过:l步骤将海龟向前移动。

函数将以:a等于60的形式调用。

在这里,repeat本质上是一个FOR循环,内置计数器repcountpupd的意思是“向上”和“向下”,它们阻止海龟在使用setxy设置位置时画画。

每次迭代的绘图都被调用,长度:l等于power 2 (7-repcount),这是因为定义在递归步骤中使用相同的:l,因此对于固定的:l,输出的总体大小将随:n呈指数增长。

票数 2
EN

Code Golf用户

发布于 2016-11-22 18:09:21

Python2,124个字节

基于维基百科文章中的代码。

代码语言:javascript
复制
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阶是一条直线。

票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/100359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档