2010-08-21 196 views
0

我試圖熟悉Ruby中的矩陣。我正嘗試使用字符串格式的輸入來初始化矩陣。我嘗試了下面的代碼,但它不工作。請幫助我做錯了什麼。紅寶石矩陣運算

input = 
'08 02 22 97 
    49 49 99 40 
    81 49 31 73 
    52 70 95 23' 

x = Matrix.rows(input.lines() { |substr| substr.strip.split(//) }) 

puts x[0,0] #I expect 8. but I am getting 48 which is not even in the matrix 

我猜我沒有正確初始化矩陣。請幫幫我。

回答

4
x = Matrix.rows(input.lines.map { |l| l.split }) 
x[0,0] # => "08" 

如果你想要得到的整數回來,你可以修改它,如下所示:

Matrix.rows(input.lines.map { |l| l.split.map { |n| n.to_i } }) 
x[0,0] # => 8 
+0

由於它的工作大!! – bragboy 2010-08-21 09:12:23

2

48是'0'的ASCII碼。

x = Matrix.rows(input.lines().map { |substr| substr.strip.split(/ /).map {|x| x.to_i} }) 

也請注意,斯普利特(/ /),否則,將它拆分所有字符和你最終0 8 0 2等..

:你應該在分割像這樣使用to_i
+0

喜,但它仍然給了我48 – bragboy 2010-08-21 09:09:14

+2

這是完全相同的代碼爲你接受的解決方案:) – Zaki 2010-08-21 09:25:18