强悍的Ruby语法: 单行代码实现打印Fibonacci数列

alienbat 2006-08-21 11:07:33
ruby -e "puts lambda {|ar| ar.each_index {|i| ar[i] = ( i == 0 ? 0 : (i == 1 ? 1: ar[i - 2] + ar[i - 1]))}}.call [0]*ARGV[0].to_i" 10
...全文
2608 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
caocheng8230 2007-01-25
  • 打赏
  • 举报
回复
mark
gamethelife 2006-12-12
  • 打赏
  • 举报
回复
"强悍的Ruby语法"???

-- 呵呵, 代码90%以上的时间是被"人"阅读的, 剩余的时间则是被"机器"执行的, 以上的代码违背了这个原则和Ruby的原意...
dreamplayer 2006-12-06
  • 打赏
  • 举报
回复
ruby的代码本意是简洁易懂,而不是abuse它的特性简洁地让人看不懂
blackant2 2006-12-03
  • 打赏
  • 举报
回复
#定义一个空数组
arr=[]
#从2到10循环
2.upto(10) do |i|
#这个临时数组用于存放数i与素数表的余数
result=[]
arr.collect do |j|
result.push i%j
end
#如果不能被素数整除,说明是素数,加入到素数表
if !result.include?(0)
arr.push(i)
end
end
puts arr
#素数表
#puts (2..10).inject([]){|a, e| (a.map {|x| e % x}).include?(0) ? a : a<<e}
#定义一个过程
def Fibonacci(ar)
#从0开始循环到数组结束
0.upto(ar.length) do |index|
if index<2
ar[index]=1
else
ar[index]=ar[index-1]+ar[index-2]
end
end
return ar
end
puts Fibonacci([0]*10)
#斐波纳契数列
#puts lambda {|ar| ar.each_index {|i| ar[i]=i<2? 1 : ar[i-2]+ar[i-1]}}.call([0]*10)

我是两个示例的ruby语法实现
无论如何,我都更喜欢前一种风格的
代码虽然是写给机器看的
也是写给人看的
你要想到团队中的其它人都不会喜欢阅读后一种风格的代码
不要让代码的阅读者认为你正在试图拷问他的智力
loveMeiNv 2006-09-18
  • 打赏
  • 举报
回复
我也认为RUBY不错。不过,以上的代码太晦涩难懂了,我认为好代码应该也是比较易懂的。
=========

Spiritring 2006-08-25
  • 打赏
  • 举报
回复
晕,引诱我呀,我最喜欢乱七八造的东西!ruby帅呀~这么刁的语法~
huangyiiiiii 2006-08-24
  • 打赏
  • 举报
回复
要说严谨 还是python好 !

在灵活与严谨之间很好的平衡.

最喜欢它这一点 !
healer_kx 2006-08-22
  • 打赏
  • 举报
回复
我喜欢Ruby,是因为它不羁的语法!
libao1983 2006-08-22
  • 打赏
  • 举报
回复
原来是大名鼎鼎的S楼主啊!
好久不见了啊,哈哈哈哈哈哈哈哈哈哈哈
cloudzm 2006-08-22
  • 打赏
  • 举报
回复
to: drdirac()

单行求素数的Python代码更简洁的形式是这个:
print reduce(lambda l,y:not 0 in map(lambda x:y % x, l) and l + [y] or l,range(2,100),[])
实际上这一句比Ruby版本更难阅读,那个not...and...or很绕人。
用什么语言都能写出这种难懂的代码,关键在于脚本语言对数据结构的操作很方便,程序员不必关注大多的细节,像Perl, Python, Ruby都有数组,Hash这种内置数据类型,程序员可以直接利用这些设施。
glaciall 2006-08-22
  • 打赏
  • 举报
回复
吗了隔壁的,一点意义都木有...
CodeProject-Jerry 2006-08-22
  • 打赏
  • 举报
回复









在C++中 你也可以用模板实现这个功能, 且模板是编译期计算的 具有O(1)的时间复杂度,!!!!
xxrl 2006-08-22
  • 打赏
  • 举报
回复
是不是可以理解为傻瓜式?
而且那么难懂的一句话程序,lz是不是觉得很拽啊?
lookhang 2006-08-22
  • 打赏
  • 举报
回复
昨天看了半天的RUBY ··觉得很好玩。。不过心里不是很踏实,MS有点不严谨的语言··

观望中··
tonyhawk 2006-08-22
  • 打赏
  • 举报
回复
无意义
gigix 2006-08-22
  • 打赏
  • 举报
回复
>昨天看了半天的RUBY ··觉得很好玩。。不过心里不是很踏实,MS有点不严谨的语言··

actually ruby is fair precise...at least much more precise than c# (maybe also java). there are so many "exceptional cases" in c#, so many violation of syntax rules by itself. (for an instance, who can tell me why i need a "delegate" to pass/return a obvious function?) on the other hand, ruby has a fair small set of syntax rules (although not as small as smalltalk or lisp). all these fancy usage derive from and comply with a few precise rules. from my point of view a really precise language should look like that.
zjh222 2006-08-22
  • 打赏
  • 举报
回复
唉,看不懂,C#/C++把我们的思维都变得如此的疆化了
alienbat 2006-08-21
  • 打赏
  • 举报
回复
纠正..."Perl被称为write only语言"
alienbat 2006-08-21
  • 打赏
  • 举报
回复
易懂的代码没法写在一行里面。
再说如果该代码易懂我又何必帖出来显摆?

嘿嘿...Perl被称为ready only语言,用Ruby也一样做得到
dhm2000 2006-08-21
  • 打赏
  • 举报
回复
我也认为RUBY不错。不过,以上的代码太晦涩难懂了,我认为好代码应该也是比较易懂的。
加载更多回复(11)

2,763

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ruby/Rails
社区管理员
  • Ruby/Rails社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧