Ruby每周一测 - 海龟画图

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

-----题目分割线-----
海龟作图(Logo)是我最早学习的一种编程语言,相信许多我的同龄人都接触过这个语言,正是它让我对编程产生了浓厚兴趣,在rubyquiz上看到[url=http://rubyquiz.com/quiz104.html]这篇利用ruby实现海龟画图的每周一测后[/url],倍感亲切:
[quote]
想像你控制了一只小海龟在一片沙滩上行动,你可以控制它前进(FORWARD),后退(BACK),左右转弯(LEFT/RIGHT),然后用它的尾巴抬起,放下来作画(PENUP/PENDOWN)
[/quote]

举例来说,画一个100*100的正方形,可以这样写:

pen_down
4.times { forward 100; right 90 }


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

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

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

让我们来重温一下儿时熟悉的小海龟画图吧:
[img]http://www.iteye.com/upload/attachment/23937/adb6fa8d-7c2e-390c-b849-6134cadd6ac8.png[/img]


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)


-----解答分割线-----
原题和一些解法在这里:[url]http://rubyquiz.com/quiz104.html[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值