Re: [問題] 句子斷詞

看板Ruby作者 (godfat 真常)時間17年前 (2008/05/22 13:11), 編輯推噓2(201)
留言3則, 3人參與, 最新討論串4/5 (看更多)
※ 引述《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
你幾時要往unfold邁進呀? XD
05/25 17:09, 2F

05/26 22:35, , 3F
想太多... XD
05/26 22:35, 3F
文章代碼(AID): #18DG2U-D (Ruby)
文章代碼(AID): #18DG2U-D (Ruby)