2016-06-21 6 views
0

Ich versuche, den Flood-Fill-Algorithmus zu verwenden, um eine der beiden Farben dieser Kurve zu füllen, die definiert ist mit Rot als 1 und Blau als Null. Wenn ich jedoch versuche, meinen Code auszuführen, heißt das, dass die Syntax für die Zeile if m[i][j]=1: falsch ist. Irgendwelche Ratschläge, wie man das debuggt? Vielen Dank. In diesem Code m ist die Matrix Ich arbeite in und i und j sind meine xy VariablenPython 4-Wege-rekursive Flutfüllung einer Kurve

from pylab import * 
m=zeroes((100,100)) 

for i in range(100): 
    for j in range(100): 
     m[i,j]=sin(i+j+0.1*i*j+0.1*j*j)+cos(i-j+0.2*i*i) 

n=m.copy() 
n[n>0]=1 
n[n<0]=0 
imshow(n) 

def floodfill (m,i,j): 
    if m[i][j]=1: 
     m[i][j]=0 

     if i>0: 
      floodfill(matrix,i-1,j) 
     if i < len(m[y]) - 1: 
      floodfill(m, i+1, j) 
     if j>0: 
      floodfill(m, i, j-1) 

      floodfill(m, i, j-1) 

Antwort

2

Sie haben den genauen Fehler nicht schreiben, aber ich kann Ihnen sagen, dass dies falsch ist:

m[i,j]=sin(i+j+0.1*i*j+0.1*j*j)+cos(i-j+0.2*i*i) 

m[i,j] ist falsch. i,j ist ein Tupel, aber Liste Indizes (das Ding in den m[] Klammern) können nur ganze Zahlen

2

Werte sind für Gleichheit verglichen werden mit == Operator anstelle eines einzelnen =, die für die Zuweisung Ausdrücke verwendet wird. Sie sollten also if m[i][j]=1: durch if m[i][j] == 1 ersetzen.

Und BTW, sagte es "Syntax Error", so sollten Sie die Syntax der markierten Zeile überprüfen. Das ist dein Tipp zum Debuggen.