を含む XML ファイルがあり<pb n="4-DIGIT-NUMBER" ... />
ます。数は場合によっては同一であるため、曖昧さをなくしたいと思いますが、今のところカウントの問題があります (正しいアプローチがありますか? => 3))
1) すべての数値を配列に読み込み、非常に長いリストを生成します:
Dir.chdir("./Tustep/luxneu")
sammel = []
open("lp42tags.txt").each do |x|
if x =~ /<pb n="(\d\d\d\d)/
sammel << $1
end
end
2) 繰り返し数を見つけてサブ配列に入れる
dupl_groups = sammel.select{|i| sammel.grep(i).size > 1}.group_by{|x| x}.values
p dupl_groups
# (much shorter example)=> [["0119", "0119"], ["0147", "0147"], ["0156", "0156", "0156"]]
3)今、私はどうにかして各サブ配列の要素を数えて、それらを(またはコピーに..)戻すことができると思いました。たとえば、[["0119:1", "0119:2"], [...], ["0156:1", "0156:2", "0156:3"] が必要です。ほとんど無限の数値計算で陽気なループを取得しました... :/)
dupl_counted = []
dupl_groups.each do |outer|
count = 1
dupl_groups do |inner|
#puts inner.inspect
inner_new = inner.to_s.sub(/(.+)/, "\\1:#{count}")
dupl_counted << inner_new
count += count
end
end
深刻な欠陥..?「each_with_index」を使用する代わりに何か?また、意味のあるチャンクでカウントするためのグループが必要です (2 ~ 6 の範囲の数の繰り返しがあるため、スライス 3 程度は受け入れられません)。配列をサブ配列に分割して、それらをすべて通常の配列として生成できれば、それでよいでしょうか?
前もって感謝します!ルネ T.