Game of Life A2 a)

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Game of Life A2 a)
Hallo Leute,

kann es sein, dass bei der Game of Life ein kleiner Fehler vorliegt? Entweder ist der erste Testfall zur a) falsch, oder in der Methode gamegrid, bei der initialisierung des grid arrays die height und width als index vertauscht. Kurz: Die uns bereits gegebene Implementierung widerspricht sich mit dem Testcase.

Geht man davon aus, dass man sich beim programmieren nicht nach dem Testfall orientiert sondern an der vorgegebenen, gamegrid Methode, die grid mit (h,w) initialisiert, dann würde man ja in allen anderen Methoden, inklusive add_entity, im 2d Array den ersten Index immer mit y (wegen height) und den zweiten immer mit x (wegen width) referenzieren.
Tut man das gibt der Testfall für 1a) aber folgendes aus:

Der Aufruf add_entity
(array([[False, False, False],
[False, False, False]], dtype=bool),
array([[ True]], dtype=bool),
0,

  1. liefert das Ergebnis
    array([[False, False, False],
    [ True, False, False]], dtype=bool), richtig wäre aber
    array([[False, True, False],
    [False, False, False]], dtype=bool).
    Diese Teilaufgabe enthält Fehler!

Vertauscht man in add_entity die beiden Indizes zu grid[x][y] oder grid[x:…, y:…] kommt der Test durch. Diese Referenzierung würde sich dann aber mit der Initialisierung von grid widersprechen, da x zur width gehört und y zur height.

Das heißt, entweder man ändert die Initialisierung von grid in der vorgegebenen Methode gamegrid zu grid = np.zeros((w,h), …) und übernimmt das in allen anderen Methoden, oder man passt den Testfall der Methode add_entity dementsprechend an, entweder indem man im Sollwert des Arrays den Truewert von Stelle a12 nach a21 rückt, oder in dem man die Parameter 0,1 von add_entity für x, y (siehe Aufruf Testcase) vertauscht.


Hallo Haba_DibiDu_,

da hast du völlig recht. Die Variablennamen sind verdreht. Ich werde die Tests und Funktionssignaturen aber für dieses Jahr nicht mehr ändern, sonst gibt es Chaos. Aber nächstes Jahr werden wir die Aufgabe besser stellen.

Vielen Dank für den Hervorragenden Bug-Report!