Ruby每周一测 - 海龟画图

Ruby每周一测 - Ruby Quiz 是Ruby Talk邮件列表上的一个持续了很长时间活动,每周有一个小题目被提出来,然后大家进行解答讨论。Amazon上还有相关的书: Best of Ruby Quiz。我尝试挑选其中的一些题目进行翻译,做一个每周一测系列,欢迎大家参与讨论。

-----题目分割线-----
海龟作图(Logo)是我最早学习的一种编程语言,相信许多我的同龄人都接触过这个语言,正是它让我对编程产生了浓厚兴趣,在rubyquiz上看到 这篇利用ruby实现海龟画图的每周一测后,倍感亲切:
引用

想像你控制了一只小海龟在一片沙滩上行动,你可以控制它前进(FORWARD),后退(BACK),左右转弯(LEFT/RIGHT),然后用它的尾巴抬起,放下来作画(PENUP/PENDOWN)


举例来说,画一个100*100的正方形,可以这样写:
pen_down
4.times { forward 100; right 90 }


完成这次的每周一测你需要做一些准备工作:
1. 下载一个 turtle.zip,这里包含了基本的框架
2. 安装tcl/tk以及相关的ruby库

在解压后的zip包里面,有个lib/turtle.rb,完成它里面的方法就实现了海龟画图的功能。

通过调用
ruby turtle_viewer.rb samples/byzantium.rb
可以看到附带的几个例子效果。

让我们来重温一下儿时熟悉的小海龟画图吧:
Ruby每周一测 - 海龟画图

def byzantium(r, n)
   return if n < 1
   fd r; rt 135
   4.times {
      pd; fd 2 * r * sin(45 * DEG); pu
      byzantium(r / 2, n - 1)
      rt 90
   }
   lt 135; bk r
end
byzantium(100, 4)


-----解答分割线-----
原题和一些解法在这里: http://rubyquiz.com/quiz104.html

你可能感兴趣的:(编程,框架,活动,Ruby,Tcl)