メモ:固定長開始位置
DATAファイルオブジェクト
ps_data.rb
DATA.lines.map(&:chomp).tap{|sizes| puts sizes.inject([1]){|poses, size| poses << poses.last + size.to_i}.zip(sizes) .map{|(pos, size)| "#{pos}\t#{size}"} } __END__ 21 1 6 1 4 1 16 1 20 1 2 1 69 1 26 1 16 1 16 1 16 1 8 1 26 1 16 1 2
標準入力
サイズ入力(終了はCtrl+Z)→サイズファイル作成
copy con sizes.dat
ps_argf.rb
ARGF.lines.map(&:chomp).tap{|sizes| puts sizes.inject([1]){|poses, size| poses << poses.last + size.to_i}.zip(sizes) .map{|(pos, size)| "#{pos}\t#{size}"} }
実行
type sizes.dat | ruby ps_argf.rb
結果(DATA版、ARGF版)
1 21 22 1 23 6 29 1 30 4 34 1 35 16 51 1 52 20 72 1 73 2 75 1 76 69 145 1 146 26 172 1 173 16 189 1 190 16 206 1 207 16 223 1 224 8 232 1 233 26 259 1 260 16 276 1 277 2 279