Pythonのジェネレータで四角いらせんを書くのに反応した
西尾泰和さんのブログの「Pythonのジェネレータで四角いらせんを書く」に反応してみた。
Pythonの短めのコードを見ると、ついつい自分ならこう書き直す、みたいに反応出来ちゃうのがいいね。
最初はPythonらしく短くならないかと思ったんだけど、なんかいじくりまわしているうちに、これってタートルグラフィクスじゃねーのって思って、それっぽくなおしてみました。
なんかアルゴリズムも変わってしまって元々の意図(「アルゴリズムを確認するためにPythonでわかりやすく書いてからJavaで書く」という趣旨)なんか跡形もなくなっている気がしますが。
Pythonの短めのコードを見ると、ついつい自分ならこう書き直す、みたいに反応出来ちゃうのがいいね。
最初はPythonらしく短くならないかと思ったんだけど、なんかいじくりまわしているうちに、これってタートルグラフィクスじゃねーのって思って、それっぽくなおしてみました。
def squareSpiral():
class turtle:
x, y = 0, 0
dx, dy = 1, 0
def right(self):
self.dx, self.dy = -self.dy, self.dx
def forward(self,n):
for i in xrange(n):
self.x += self.dx
self.y += self.dy
yield self.x, self.y
width = 0
t = turtle()
yield t.x, t.y
while True:
width += 1
for i in xrange(2):
for x,y in t.forward(width):
yield x,y
t.right()
g = squareSpiral()
for i in range(10):print g.next()
なんかアルゴリズムも変わってしまって元々の意図(「アルゴリズムを確認するためにPythonでわかりやすく書いてからJavaで書く」という趣旨)なんか跡形もなくなっている気がしますが。