Was ist eine effiziente Möglichkeit, ein Schachbrett in LISP zum Beispiel zu speichern, um das 8-Königinnen-Puzzle zu lösen?Was ist eine effiziente Möglichkeit, ein Schachbrett in LISP zu speichern?
Antwort
Für die 8 Königinnen Problem, Ihre effizientesten Speicher wird ein Array von 8 Bytes sein. Clojure stellt die Methode byte-array
zur Verfügung, um das Erstellen eines solchen Arrays zu vereinfachen. Behandle jedes Byte als ein Array von 8 Bits und verwende 0 für ein leeres Quadrat und 1 für eine Königin.
Dies funktioniert nicht, wenn Sie mehr als eine Art von Schachfiguren verwenden möchten; Darüber hinaus sollten Sie einen anderen Ansatz betrachten, wenn Sie variable Boardgrößen wünschen.
Um das Problem der acht Königinnen effizient zu lösen, suchen Sie nach einer effizienten Möglichkeit, eine Teillösung darzustellen.
Wenn wir Reihen und Dateien 0
-7
Nummer und arbeiten zunehmend durch die Reihen, dann ein Vektor rank -> file
macht den Job.
- Die Reihen kümmern sich um sich selbst.
- Die freien Dateien sind, was von
(set (range 8))
übrig bleibt. - Die frei aufsteigenden Diagonalen sind die Reste von
(set (range 15))
. - Die frei fallenden Diagonalen sind die Reste von
(set (range -7 8))
.
... wo, für jeden Platz [i j]
,
- die
rank
isti
- die
file
istj
- die
rising-diagonal
ist(+ i j)
- die
falling-diagonal
ist(- i j)
Sie könnten, wie @WolfeFan schlägt, Bit-Sets verwenden, um die freien oder belegten Steckplätze zu speichern. Aber die Speicherung ist in beiden Darstellungen vernachlässigbar. Und welche Darstellung ist schneller, ich würde nicht raten.
- 1. Was ist eine effiziente Möglichkeit, StringBuilder Objekte zu vergleichen
- 2. Eine effiziente Sammelfunktion in Common Lisp
- 3. Effiziente Möglichkeit, Wörterbuch (Hash) in Datei mit Python zu speichern?
- 4. Effiziente Möglichkeit, umorderbare Artikel in einer Datenbank zu speichern
- 5. ColdFusion - Was ist eine effiziente Möglichkeit, ein Array von Strukturen zu durchsuchen?
- 6. Rails effiziente Möglichkeit, JavaScript-Objekt zu Model zu speichern?
- 7. Was ist eine effiziente Möglichkeit, eine große XML-Sammlung in Ruby/Rails zu rendern?
- 8. Eine effiziente Möglichkeit, Farbrechtecke zu malen
- 9. Eine effiziente Möglichkeit, ein Array und seine Schlüssel in einer Datenbank zu speichern
- 10. Effiziente Möglichkeit, eine Zeichenkette zu token - C
- 11. Was ist eine effiziente Möglichkeit, ein Array in ein Training und Test-Set in Julia zu teilen?
- 12. Was ist eine effiziente Möglichkeit, nach Spalten zu partitionieren, aber eine feste Anzahl von Partitionen beizubehalten?
- 13. Was ist eine effiziente Möglichkeit, alle Zeichenfolgen in einem Array mit einem Leerzeichen zu verbinden?
- 14. Was ist eine gute Möglichkeit, ein Array von ganzen Zahlen (Java) zu MySQL-Datenbank zu speichern
- 15. Python: Was ist eine effiziente Möglichkeit, Zeichenfolgen in Pandas zu ersetzen
- 16. Was ist eine effiziente Möglichkeit, Feinde, Positionen und was auf dem Bildschirm gespeichert ist
- 17. Was ist eine einfache und effiziente Möglichkeit, Zeilen mit Zeitintervallüberlappungen in SQL zu finden?
- 18. Was Lisp ist besser zu analysieren?
- 19. Was ist der effiziente Weg, um ein Berechtigungssystem zu machen?
- 20. Was ist eine effiziente Möglichkeit, Tausende von Datensätzen mit Django in eine SQLite-Tabelle einzufügen?
- 21. Was ist eine gültige, effiziente und moderne Möglichkeit, Bilder nicht auf Mobilgeräten zu laden?
- 22. Effiziente Möglichkeit, eine JSON-Zeichenfolge in einer Cassandra-Spalte zu speichern?
- 23. effiziente Möglichkeit, ein Diagramm eines Wörterbuchs
- 24. Die effiziente Möglichkeit, eine Tabelle in GO
- 25. Ist SHA256 eine gute Möglichkeit, Passwörter zu speichern? (in py3)
- 26. Eine effiziente Möglichkeit, dieses Code-Snippet zu schreiben?
- 27. Effiziente Möglichkeit, Daten auf dem Datenträger zu speichern, während eine rechenintensive Aufgabe ausgeführt wird
- 28. Effiziente Möglichkeit, MIPS-Ausdruck zu berechnen
- 29. Was ist eine effiziente Möglichkeit, ein neues entsprechendes Element in ein Array von einem anderen Array einzufügen?
- 30. Effiziente Möglichkeit, komplexe JavaScript-Formen zu erstellen
effizient für was? Erinnerung? Zugriffsgeschwindigkeit? Zeilen von Code? –
Jede Antwort wird für alle drei markierten Sprachen unterschiedlich sein. Wähle eins. – molbdnilo
https://en.wikipedia.org/wiki/Board_representation_%28chess%29 –