У меня есть длинный код, но я попытался скопировать и адаптировать мою проблему как можно меньше строк. У меня есть метод, который создает массив (2D) с 0 и 1Значения в цикле while не изменяют внешние значения
array1 = newValue(2) - the number 2 represents how many 1 the array has
array2 = newValue(3)
и этот цикл
(0..9).each do|i|
(0..9).each do|j|
while((array1[i][j] == array2[i][j]) && (array2[i][j] == 1)) do
array1 = newvalue(2)
array2 = newvalue(3)
end
end
end
Я использую время цикла, так что я выиграл т есть 1 в том же самом положении в обоих массивах. Но то, что находится внутри цикла while, не изменяет значения массива. Я также попытался использовать карту!/Collect! но я думаю, что я сделал что-то не так, потому что ничего не случилось. Надеюсь, вы поймете, что я пытаюсь сделать.
Edit:
def newValue(value)
value = value.to_i
array = Array.new(10) { Array.new(10 , 0) }
(a lot of conditions on how to position the items in the array)
return array
end
Что такое метод 'newvalue'? Это просто попытка заполнить 2-й массив? Нам может помочь немного больше контекста. Похоже, вы, вероятно, хотите, чтобы эта внутренняя вещь больше напоминала «array1 [i] [j] = newvalue (2)» или что-то в этом роде, но поскольку я не уверен, что вы пытаетесь сделать, это трудно понять. –
Вы хотите иметь это сделать 'array1 [i] = newValue (2)' и 'array2 [i] = newValue (3)'? Вероятно, проблема связана с тем, что вы пытаетесь назначить массив 1d (возврат из newValue) в массив 2d (array1 и array2). Кроме того, в вашем выражении while массив 'array2' никогда не будет равен' 1', если это фактически массив 2d - опять же, вы смешаете яблоки и апельсины, так сказать. –
@mrrogers my while loops предполагается найти, если array1 и array2 имеют элемент со значением 1 позиции с точно такими же координатами. Если они это сделают, им будут присвоены новые значения. (Я изменил условие сейчас, я пропустил это, когда я написал программу здесь.) – Bogdan