2011年5月25日

[ruby-list:48107] Re: データ整形

長谷川 と申します。

むらたさんが指摘されているように、何をしたいのか判りませんので、
次のような動作を勝手に想像して楽しませていただきました。

入力の各行について、
(1) 指定された(任意の)文字数を行頭から取り出して、当該行に関する
1行目の出力とする。

(2) 2行目以後は、「直前に出力した行の先頭文字が連続する数」を
行の長さとして当該行の残りから取り出して出力する。
(3) 当該行のデータが残っている限り (2) を繰り返す。

臼井さんの求めるものかどうかは知りませんが、この動作は出力例には
合致すると思います。不細工ですがコード例です:

#!/usr/bin/ruby

n1 = ARGV.shift.to_i
if n1 < 1
$stderr.print "usage: #{File.basename($0)} length-of-first-line [file]\n"
exit 1
end

def nchar_print(n, data)
return if data.nil? || data.size < 1 || n < 1
head, tail = data[0, n] , data[n..data.size]
print head + "\n"
nn = 0
while (nn < n && head[nn] == head[0]) do
nn += 1
end
nchar_print(nn, tail)
end

while (line = gets) do
nchar_print(n1, line.chomp)
end


投稿者 xml-rpc : 2011年5月25日 00:23
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/103952
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。