Я пытаюсь сделать заливку заливки, которая запрашивает ввод пользователя, начиная с верхнего правого угла произвольно сгенерированного массива, заполненного цифрами 1-6, которые представлены «цветами». Я добавил функцию oldColor/newColor только сейчас, и я получаю сообщение об ошибке, и я не совсем уверен, почему. Кроме того, алгоритм продолжает запрашивать ввод без печати того, что выглядит наводнение на каждом шаге.Ruby Рекурсивный флуд-это
def floodfill(array_1, row, column, colours, oldColor, newColor)
#colours is an array of the 6 colours i'm going to be using
boxHeight = array_1.length
boxWeight = array_1[0].length
oldColor = array_1
#puts oldColor
print "> "
newColor = gets.chomp.downcase
if array_1[row][column] != oldColor
return
if newColor == "r"
newColor = colours[:red]
array_1[row][column] = newColor
floodfill(array_1, row + 1, column, colours, newColor) # right
floodfill(array_1, row - 1, column, colours, newColor) # left
floodfill(array_1, row, column + 1, colours, newColor) # down
floodfill(array_1, row, column - 1, colours, newColor)# up
print_it
else
puts "didnt get that"
array_1.each do |row|
row.each do |c|
print c
end
puts
end
end
end
end
floodfill(array_1,14,9,colours,0,0)
Я не могу напрямую добавлять изображения, но вот то, что мой выход в настоящее время выглядит, а затем сообщение об ошибке http://imgur.com/a/88UrK
Пожалуйста, прочтите «[mcve]». Нам нужен минимальный код и входные данные, которые демонстрируют проблему, а также ваш ожидаемый результат. Какой код ошибки вы получаете? Кроме того, в Ruby мы используем snake_case для имен переменных. camelCaseIsTooHardToRead. –
Этот 'oldColor = array_1' не имеет смысла. Почему вы отбрасываете аргумент и заменяете его копией изображения? – Max
Мой процесс мышления состоял в том, чтобы oldColors содержали то, что изначально было там, чтобы иметь newColors для заполнения. Это не сработает? Я довольно новичок в рубине и хотел бы указать в правильном направлении, чтобы получить эту работу. – LeeKay220