Ich kann mir nicht vorstellen, warum mein Python-Code in gewisser Weise funktioniert.Python gibt bei jeder Iteration einen anderen Wert aus, der Wert wird jedoch nicht geändert.
Da ich nicht "aktuelle" ändern, sollte die Ausgabe für jede Iteration gleich sein? Dies ist ein Problem, da ich "current" (Strom) als gleich definieren muss, damit jeder Node aus demselben Startwert generiert wird.
Siehe den folgenden Code:
tester.py
class Node:
def __init__(self, board=None):
self.board = board
def getBoard(self):
return self.board
def swap(self, xPos, yPos): # swap with zero
for a in self.board:
if 0 in a:
self.board[self.board.index(a)][a.index(0)] = self.board[xPos][yPos]
self.board[xPos][yPos] = 0
open = []
def gen_nodes(current):
for i in [7, 15, 11]:
print(current) # <-- why does this print a different value each time?
new = Node(current)
for a in new.getBoard():
if i in a:
xPos = new.getBoard().index(a)
yPos = a.index(i)
new.swap(xPos, yPos)
open.append(new)
if __name__ == '__main__':
gen_nodes([[1, 2, 3, 4],
[8, 5, 6, 7],
[9, 10, 11, 0],
[12, 13, 14, 15]])
Ausgang:
[[1, 2, 3, 4], [8, 5, 6, 7], [9, 10, 11, 0], [12, 13, 14, 15]]
[[1, 2, 3, 4], [8, 5, 6, 0], [9, 10, 11, 7], [12, 13, 14, 15]]
[[1, 2, 3, 4], [8, 5, 6, 15], [9, 10, 11, 7], [12, 13, 14, 0]]
nach einer kurzen Debug-Sitzung, die ich gerade gemacht habe, ist das Problem in 'new.swap (xPos, yPos)'. Ich meine, hier ändert sich "Strom". immer noch versuchen herauszufinden, was genau passiert. – noamgot
'def getBoard (selbst):' das ist nicht Java. Mach keine Getter und Setter. –