ihag #4255(2007/11/19 13:10 GMT) [ Ruby ] Rating1/1=1.00
最初に,行数分の文字ずつ(例えば,4分割なら4文字ずつ)与えられた文字列を走査し,[14, 14, 13, 13] のような各行の文字数からなる配列を作ります.次に,配列を走査しつ つ,この文字数ずつ文字列をとって配列の中身を置き換え,出力とします.
% ./divid.rb divid 4: ["ゆめよりもはかなき世のなかを", "なげきわびつゝあかしくらすほ", "どに四月十よひにもなりぬれ", "ば木のしたくらがりもてゆく"] divid 5: ["ゆめよりもはかなき世の", "なかをなげきわびつゝあ", "かしくらすほどに四月十", "よひにもなりぬれば木の", "したくらがりもてゆく"] divid 6: ["ゆめよりもはかなき", "世のなかをなげきわ", "びつゝあかしくらす", "ほどに四月十よひに", "もなりぬれば木のし", "たくらがりもてゆく"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
require 'pp' $KCODE='EUC' class String def divid(lines) out, x, y = [0] * lines, split(''), nil y.times {|i| out[i] += 1 } while (y = x.slice!(0, lines).size) > 0 rest = self out.map! do |len| _, ret, rest = *rest.match(/(.{#{len}})(.*)/) ret end end end sample = "ゆめよりもはかなき世のなかをなげきわびつゝあかしくらすほどに四月十よひにもなりぬれば木のしたくらがりもてゆく" (4..6).to_a.each do |i| puts "divid #{i}:" pp sample.divid(i) puts end
Rating1/1=1.00-0+
[ reply ]
ihag
#4255()
[
Ruby
]
Rating1/1=1.00
最初に,行数分の文字ずつ(例えば,4分割なら4文字ずつ)与えられた文字列を走査し,[14, 14, 13, 13] のような各行の文字数からなる配列を作ります.次に,配列を走査しつ つ,この文字数ずつ文字列をとって配列の中身を置き換え,出力とします.
Rating1/1=1.00-0+
[ reply ]