Wie kann ich mit Zahlen in einem quadratischen 2D-Array zu füllen, so dass ein (zufälliger) Pfad von aufeinanderfolgenden Zahlen in aufsteigender Reihenfolge 1-(edge length)
2
erstellt wird?Füllen 2D-Gitter mit einzelnem Pfad
Ich versuche, einen Hidato (alias Hidoku) Generator in JavaScript zu schreiben. Es ist nicht unbedingt die beste Sprache, um es zu schreiben, aber das ist es, was ich gerade benutze. Das Spielbrett ist zunächst nur teilweise gefüllt. Die einzigen angezeigten garantierten Nummern sind die erste und die letzte Nummer im Pfad. Die Idee des Spiels ist es, einen einzelnen Weg von Zahlen durch das Gitter (vertikal, horizontal oder diagonal) zu schaffen, so dass es eine fortlaufende aufsteigende Kette von Zahlen gibt. Die Kette kann sich aufgrund der Diagonalen überschneiden.
Ich bin auf der Platine Generation Teil stecken. Ein gültiges Gitter muss einen (einzelnen, nicht verzweigenden) Pfad mit fortlaufenden Nummern haben, die von 1
bis (grid size)
2
gehen. Ich habe geschaut und geschaut, aber nichts gefunden, was mir hätte helfen können. Gibt es einen Wegverfolgungsalgorithmus, der ein 2D-Array mit einem einzigen Pfad füllen kann, der aus aufeinanderfolgenden Zahlen besteht?
Meine anfängliche, naive Methode bestand darin, ein 2D-Array mit Werten und Auslagerungswerten zu füllen, bis das Gitter ein gültiges Hidato-Puzzle war. Das würde ewig dauern und wäre sehr ineffizient, also habe ich diese Idee verschrottet.
Mein nächster Gedanke war, einen Backtracking Tracer zu verwenden, um das Raster mit aufeinanderfolgenden Werten zu füllen, aber ich bin mir nicht sicher, wie man einen solchen Tracer implementiert. Das Erzeugen eines Pfades ist einfach genug (wähle eine zufällige benachbarte Zelle und bewege dich dorthin, bis das 2D-Array voll ist), aber mein Problem hier ist die "Rückverfolgungs-Eigenschaft" des Algorithmus oder eine andere Möglichkeit, immer sicherzustellen, dass es ein zufälliges gibt Pfad der fortlaufenden Nummern im gesamten Netz. Ich dachte an einen Labyrinth-Tracer, aber das geht nicht um einzelne Pfade ohne Abzweigungen oder Sackgassen.
Wie kann ich von hier fortfahren? Sollte ich andere Optionen in Betracht ziehen als einen Pfad-Tracer oder einen ähnlichen Algorithmus?
Verwandte Fragen:
Habe ich es richtig verstanden: Sie legen King Schachfigur auf eine zufällige Zelle des Schachbretts und besuchen Sie jede Zelle nur einmal. Dann nimmst du einen "Schnappschuss" von diesem Schachbrett und nummerierst alle Zellen mit Zahlen in der Durchlaufreihenfolge neu? – izogfif
Ja, das ist richtig. Die Zellen müssen jedoch benachbart sein - ich kann nicht zufällig die Schachfigur herumspringen – Bojangles
brauchen Sie Zellen, um die gemeinsame Kante zu haben? Wie die Schachfigur bewegt sich Rook, aber nur zu einer Zelle maximal? – izogfif