2008-05-13
Ruby每周一测 - 海龟画图
关键字: ruby quiz, logo
Ruby每周一测 - Ruby Quiz 是Ruby Talk邮件列表上的一个持续了很长时间活动,每周有一个小题目被提出来,然后大家进行解答讨论。Amazon上还有相关的书: Best of Ruby Quiz。我尝试挑选其中的一些题目进行翻译,做一个每周一测系列,欢迎大家参与讨论。
-----题目分割线-----
海龟作图(Logo)是我最早学习的一种编程语言,相信许多我的同龄人都接触过这个语言,正是它让我对编程产生了浓厚兴趣,在rubyquiz上看到这篇利用ruby实现海龟画图的每周一测后,倍感亲切:
想像你控制了一只小海龟在一片沙滩上行动,你可以控制它前进(FORWARD),后退(BACK),左右转弯(LEFT/RIGHT),然后用它的尾巴抬起,放下来作画(PENUP/PENDOWN)
举例来说,画一个100*100的正方形,可以这样写:
完成这次的每周一测你需要做一些准备工作:
1. 下载一个turtle.zip,这里包含了基本的框架
2. 安装tcl/tk以及相关的ruby库
在解压后的zip包里面,有个lib/turtle.rb,完成它里面的方法就实现了海龟画图的功能。
通过调用
ruby turtle_viewer.rb samples/byzantium.rb
可以看到附带的几个例子效果。
让我们来重温一下儿时熟悉的小海龟画图吧:
-----解答分割线-----
原题和一些解法在这里:http://rubyquiz.com/quiz104.html
-----题目分割线-----
海龟作图(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
可以看到附带的几个例子效果。
让我们来重温一下儿时熟悉的小海龟画图吧:
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
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 27243 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
我的相册
M_100_4350
共 30 张
共 30 张
最近加入圈子
最新评论
-
Java程序员应该学习Ruby
[quote="baichinie"]public interface List ...
-- by unique.wu -
Java程序员应该学习Ruby
看了这个帖子,我终于找到了在本论坛可以多得分的秘密途径,也就是捷径,那就是多写R ...
-- by ltian -
Java程序员应该学习Ruby
以前我主要用.net, 现在改用python, 无论如何不想换回去了. 不过, ...
-- by 白发红颜 -
Java程序员应该学习Ruby
geszJava 写道ruby没啥吸引力,还是groovy好,不容易犯错。rub ...
-- by liusong1111 -
Java程序员应该学习Ruby
ruby没啥吸引力,还是groovy好,不容易犯错。ruby陷阱太多了,如果不是 ...
-- by geszJava






评论排行榜