[閒聊] trivial example

看板Ruby作者 (godfat 真常)時間18年前 (2006/10/05 22:14), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串1/1
剛剛看到別人的作業,無聊(空虛)之下順手寫了一下 題目大概就是輸入一個整數,然後把所有的位數相加後輸出 如 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

10/05 23:32, , 1F
puts gets.split(//).inject(0){|$_,n|$_+=n.to_i} # golf?:p
10/05 23:32, 1F

10/05 23:50, , 2F
有道理!
10/05 23:50, 2F
文章代碼(AID): #159HDTfi (Ruby)
文章代碼(AID): #159HDTfi (Ruby)