Рубиновая матричная операция - PullRequest
0 голосов
/ 21 августа 2010

Я пытался познакомиться с матрицами в 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

Я полагаю, что неправильно инициализирую матрицу.Пожалуйста, помогите мне.

Ответы [ 2 ]

4 голосов
/ 21 августа 2010
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
2 голосов
/ 21 августа 2010

48 - код ASCII '0'.Вы должны использовать to_i для разделения следующим образом:

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

Пожалуйста, обратите внимание на разделение (/ /), в противном случае оно будет разделено для всех символов, и вы получите 0 8 0 2 и т. Д..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...