作者godfat (godfat 真常)
看板Ruby
标题[闲聊] trivial example
时间Thu Oct 5 22:20:21 2006
刚刚看到别人的作业,无聊(空虚)之下顺手写了一下
题目大概就是输入一个整数,然後把所有的位数相加後输出
如 1234 => 10; 555 => 15;
一开始写成这样:
v, r = gets.to_i*10, 0
r += v%10 while (v/=10) > 0
puts r
不过据说要用递回,所以我改成这样:
def go v, r
return go(v/10, r+v%10) if v > 0
r
end
puts go(gets.to_i*10, 0)
不过感觉很无趣,所以试了一下一行 Ruby...
puts (l=lambda{|l,v,r|return(if v>0 then l[l,v/10,r+v%10] else r
end)})[l,gets.to_i*10,0]
不幸 BBS 不够宽放不下…
拆成好几行长这样:
puts ( l = lambda{ |l, v, r| return (if v > 0
l[l, v/10, r+v%10]
else
r
end)}
)[l, gets.to_i*10, 0]
不过还替 lambda 取名称实在是太蠢了…但 self 又 call 不到
有啥好方法吗?
--
By Gamers, For Gamers - from the past Interplay
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.232.18.139
1F:推 vgod:puts gets.split(//).inject(0){|$_,n|$_+=n.to_i} # golf?:p 10/05 23:32
2F:推 godfat:有道理! 10/05 23:50