用Ruby算一個有趣的數列

看到一個很有趣的猜數列題目:
[url]http://www.iteye.com/topic/346772[/url]
原文引用如下:
[quote]
1
11
21
1211
111221
312211
13112221
1113213211
聰明的你,請找出其中的規律,並把下一行數字寫出來
用你的人品保證,先別搜,先想想.......
[/quote]

我找了好久沒有找到規律,最後還是google了一把 :oops: 原來這個規律這麼簡單,就是數有幾個連續的數字:
[url]http://en.wikipedia.org/wiki/Look-and-say_sequence[/url]
雖然規律簡單,上面這篇wikipedia的文章還是有很多有趣的內容。

試試看用ruby來輸出這個數列:

s = '1'
9.times do
puts s
#用正則表達式查找連續的數字,用匹配的字符長度和該數字替換
s.gsub!(/(\d)\1*/){|match| "#{match.size}#{match[0,1]}"}
end


越來越覺得ruby在處理字符和正則上有很多很爽的語法糖, :)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章