0

私はRubyの初心者で、勉強を始めたばかりです。2 次元配列の正方行列をファイルから読み取るソリューションが見つかりません。

ファイルgraph.txt:

0 3 0 0 10 0 0
0 0 9 0 0 0 0
0 0 0 3 0 0 15
0 0 0 0 0 0 10
0 0 0 0 0 8 0
0 0 0 0 0 0 0
0 0 0 0 15 0 0

私のコード:

n=7
Arr = Array.new(n).map!{Array.new(n)}
text = ''
tx = File.readlines("graph.txt")
text = tx.join
i=0
text.each_line do |line|
        Arr[i] = line.split(/\n/)
        i+=1
end

p Arr

結果:

[["0 3 0 0 10 0 0"], ["0 0 9 0 0 0 0"], ["0 0 0 3 0 0 15"], ["0 0 0 0 0 0 10"], [ "0 0 0 0 8 0"]、["0 0 0 0 0 0 0"]、["0 0 0 0 15 0 0"]]

結果が必要です:

[[0, 3, 0, 0, 10, 0, 0], [0, 0, 9, 0, 0, 0, 0], [0, 0, 0, 3, 0, 0, 15], [ 0, 0, 0, 0, 0, 0, 10], [0, 0, 0, 0, 0, 8, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0、0、0、15、0、0]]

4

1 に答える 1

0
# Replace DATA.each_line with IO.readlines('graph.txt') to use the file as a data source

matrix = DATA.each_line.map { |line| line.split.map(&:to_i) }
puts matrix.inspect


__END__
0 3 0 0 10 0 0
0 0 9 0 0 0 0
0 0 0 3 0 0 15
0 0 0 0 0 0 10
0 0 0 0 0 8 0
0 0 0 0 0 0 0
0 0 0 0 15 0 0

# => [[0, 3, 0, 0, 10, 0, 0], [0, 0, 9, 0, 0, 0, 0], [0, 0, 0, 3, 0, 0, 15], [0, 0, 0, 0, 0, 0, 10], [0, 0, 0, 0, 0, 8, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 15, 0, 0]]
于 2012-11-19T13:06:58.473 に答える