Closed jgeramb closed 8 months ago
Danke für die detaillierte Info, da hast du echt den letzten kleinen edge case erwischt, ich hatte mir dazu nämlich auch schon Gedanken gemacht :sweat_smile:
Meine Lösungsidee: Ein Segment darf niemals die entgegengesetzte Richtung des Segmentes drei Positionen vorher einnehmen. Ich denke das sollte das ganze elegant lösen.
Dadurch wird allerdings eine U-förmige Map ebenfalls verhindert. Ich würde noch einen weiteren Check hinzufügen, ob dasselbe auch für i - 1
und i - 4
gilt. Dann würde ausschließlich der Kreis vermieden werden.
Ein Unit-Test für den Edge-Case wäre vermutlich auch angebracht ;)
Thanks, wir besprechen das im PR :)
Problem
Das 8. Segment teilt sich ein Feld mit dem 3. Segment auf dem Spielfeld, wodurch dem Feld kein eindeutiges Segment zugewiesen werden kann.
Erwartetes Ergebnis
Die Richtung wird so lange neu ausgelost, bis es keine Überlappungen mehr gibt.
1. Lösungsansatz
Alle neuen Felder-Koordinaten berechnen und überprüfen, ob Koordinaten bereits bestehender Felder mit den neuen Koordinaten übereinstimmen.
2. Lösungsansatz
Die absolute Summe aller ∆direction der Indizes
i - 4
bisi
darf nicht größer als 4 werden.i
ist hierbei der Index des letzten Segments und es muss jeweils die Differenz zum vorherigen Segment bestimmt werden.Beispielhafte Implementation in Java:
Dein Betriebssystem?
Windows