私はflood-fillを作成しようとしています。ユーザ入力は、無作為に生成された配列のうち、 'colors'で表される1から6までの数字の入った配列の右上隅から始まります。今はoldColor/newColor機能を追加しましたが、エラーメッセージが表示されてしまいました。そうでなければ、アルゴリズムは各ステップで新しいflood-fillがどのように見えるかを印刷せずに入力を求め続けます。Ruby Recursive flood-it
if array_1[row][column] != oldColor
return
それ一度:
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
私は、newColorsに塗りつぶしの責任を持たせるためにoldColorsにもともとあったものがoldColorsに含まれるようにすることを考えました。これはうまくいかないでしょうか?私はかなり新しくルビーになっており、この作業をするための正しい方向を指し示したいと思っています – LeeKay220