column
в вашем вложенном цикле each
- это копия значения в этом месте массива, а не указатель / ссылка на него, поэтому при изменении его значения вы меняете только значение копии (который перестает существовать вне блока).
Если вы просто хотите, чтобы двумерный массив заполнялся 1
s, что-то настолько простое, как это будет работать:
def mda(width,height)
[ [1] * width ] * height
end
Довольно просто.
Кстати, если вы хотите знать, как изменять элементы двумерного массива при его итерации по нему, вот один из способов (начиная со строки 6 в вашем коде):
#init all its values to 1
a.length.times do |i|
a[i].length.times do |j|
a[i][j] = 1
end
end