メモ:固定長開始位置

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