Re: [問題] 句子斷詞
※ 引述《itucson (愛吐桑)》之銘言:
: : 兩個字串一樣長,就 zip 起來並 fold
: : 兩種狀況:
: : 0. 串到最後一個詞
: : 1. 串新詞
: : 寫成程式就是:
: : s = '網路應用程式'
: : b = '001101'
: : result = s.scan(/./u).zip(b.scan(/./)).inject([[]]){ |r, i|
: : r.last << i.first
: : r << [' '] if i.last == '1'
: : r
: : }.join
: : puts result
: : # => 網路應 用 程式
:
: 我查了幾天了,可是還是看不懂 .inject([[]])的意思
: 能不能請大大解釋一下 XD
:
: → itucson:是初使成二維陣列嗎? 05/21 15
是的,一開始的 r 會是 [[]], 一個陣列中包著另一個空陣列
外層的陣列有一個元素,這個元素是一個空陣列
而 i 就依序會是 zip 過後的陣列,裡面的所有元素
inject (fold) 用熟悉後,就會覺得很好用了 :p
我第一次看到這個東西,只覺得這什麼鬼,太難懂了吧?
其實也能寫成 each 的形式:
r = [[]]
s.scan(/./u).zip(b.scan(/./)).each{ |i|
r.last << i.first
r << [' '] if i.last == '1'
}
result = r.join
puts result
不過我比較喜歡 fold XD
http://en.wikipedia.org/wiki/Fold_(higher-order_function)
--
生死去来、棚頭傀儡、一線断時、落落磊磊
《花鏡》-世阿弥
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.28.18
推
05/24 21:29, , 1F
05/24 21:29, 1F
推
05/25 17:09, , 2F
05/25 17:09, 2F
→
05/26 22:35, , 3F
05/26 22:35, 3F
討論串 (同標題文章)
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章