обработка двух многомерных массивов в ruby - PullRequest
0 голосов
/ 13 апреля 2011

У меня есть такой массив

[["1"], ["2","3"]]

В начале у меня был этот алгоритм

maxarray = []
i = 0
m = array.count
while i < m do
  x = 0
  s = array[i].count
  while x < s do
    maxarray[i][x] = (Integer(array[i][x]) + [Integer(maxarray[i-1][x-1]), Integer(maxarray[i-1][x])].max)
    x+=1 
  end
  i+=1
end

ошибка была такая:

`<main>': undefined method `[]' for nil:NilClass (NoMethodError)

поэтому я подумал, что, возможно, индексы массива работают неправильно, поэтому я расширил свой алгоритм

maxarray = []
i = 0
m = array.count
while i < m do
  x = 0
  s = array[i].count
  while x < s do
    if i-1 < 0 
        item2 = 0
    elsif i-1 < 0 && x-1 < 0 
        item1 = 0
    else item1 = maxarray[i-1][x-1] 
         item2 = maxarray[i-1][x] 
    end
    maxarray[i][x] = (Integer(array[i][x]) + [Integer(item1), Integer(item2)].max)
    x+=1 
  end
  i+=1
end

, но теперь у меня другая ошибка:

`Integer': can't convert nil into Integer (TypeError)

как можно предотвратить эту ошибку и запустить скрипт?

1 Ответ

0 голосов
/ 13 апреля 2011

Почему вы не flatten массив и не делаете ваши вычисления?Конечно, это сделает вашу функцию проще.

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