* lionbarrage <> (02:17) schrieb:
> File 1
> ALPHA|OMEGA|GAMMA
> 1 | 2 | 3
> 4 | 5 | 6
>
> File 2
> EPSILON|GREEK|OMEGA|BETA
> 7 | 8 | 9 | 0
> 12 | | 13 |
> 10 | 11 | 5 | 15
>
> End result should be:
>
> ALPHA|OMEGA|GAMMA|EPSILON|GREEK|BETA
> 1 | 2 | 3 | | |
> 4 | 5 | 6 | 10 | 11 | 15
> | 9 | | 7 | 8 | 0
> | 13 | | 12 | |
I hoped I fixed your ASCII art the right way.
In understand that this represents named sets of integers that are to be
merged. Right?
The natural representation of that would be a hash containing sets.
There is a set class, but I use arrays here:
require 'pp'
sets = Hash.new { | h, k | h[k] = [] } # hash that contains a new array
# for every new key
%w(file1.txt file2).each do | filename |
File.open(filename) do | f |
names = f.gets.chop.split('|')
f.each do | line |
names.zip(line.chop.split('|')).each do | name, value |
sets[name] << value
end
end
end
end
pp sets
This code does no tabular printing, treats the "integers" as strings,
without excluding empty strings and doubles. But that could easily be
fixed.
Probably I got it all wrong.
mfg, simon .... l