我正在查看 Koch Snowflake 的 wikipedia 页面(此处),并被所有采用徽标/海龟样式的示例所困扰。所以我开始制作我自己的返回列表或坐标的。
我的实现是在 python 中,我基本上撕掉了 python turtle 的实现,但是用基本的 trig 替换了海龟特定的东西。它导致了一些丑陋的代码。我对你的挑战是要么改进我的代码,要么自己想出一个更优雅的解决方案。它可以是 python,也可以是你最喜欢的语言。
我的代码:
from math import sin, cos, radians
def grow(steps, length = 200, startPos = (0,0)):
angle = 0
try:
jump = float(length) / (3 ** steps)
except:
jump = length
set="F"
for i in xrange(steps): set=set.replace("F", "FLFRFLF")
coords = [startPos]
for move in set:
if move is "F":
coords.append(
(coords[-1][0] + jump * cos(angle),
coords[-1][1] + jump * sin(angle)))
if move is "L":
angle += radians(60)
if move is "R":
angle -= radians(120)
return coords
编辑:由于懒惰复制,我忘记了导入