(Trotz mehr als 60 Fragen mit dem Tag Schach haben wir keine einfache Herausforderung für N-Damen.)
Im Schach wird das N-Queens-Puzzle folgendermaßen beschrieben: Ordnen Sie die Königinnen bei gegebenem n x n
Schachbrett und n
Königinnen so auf dem Schachbrett an, dass sich keine zwei Königinnen gegenseitig bedrohen. Unten finden Sie eine Beispiellösung für n = 8
, von Wikipedia ausgeliehen.
Oder beim ASCII-Rendering:
xxxQxxxx
xxxxxxQx
xxQxxxxx
xxxxxxxQ
xQxxxxxx
xxxxQxxx
Qxxxxxxx
xxxxxQxx
Die Herausforderung hierbei wird darin bestehen, n
eine ASCII-Darstellung einer Lösung für das n
-Queens-Rätsel einzugeben und auszugeben . Da es mehr als eine mögliche Lösung gibt (z. B. mindestens eine Rotation oder Reflexion), muss Ihr Code nur eine gültige Lösung ausgeben.
Eingang
Eine einzelne positive ganze Zahl n
mit n >= 4
in jedem geeigneten Format . (n = 2 und n = 3 haben keine Lösungen, und n = 1 ist trivial, so dass diese ausgeschlossen sind)
Ausgabe
Die resultierende ASCII-Darstellung einer Lösung des oben beschriebenen N-Königinnen-Puzzles. Sie können zwei unterschiedliche ASCII-Werte auswählen, um Leerzeichen und Königinnen darzustellen. Dies kann wiederum in jedem geeigneten Format (einzelne Zeichenfolge, eine Liste von Zeichenfolgen, ein Zeichenfeld usw.) ausgegeben werden.
Regeln
- Führende oder nachfolgende Zeilenumbrüche oder Leerzeichen sind ebenso optional wie Leerzeichen zwischen Zeichen, sofern die Zeichen selbst korrekt ausgerichtet sind.
- Sie können entweder einen Algorithmus verwenden, um die möglichen Positionen zu berechnen, oder den expliziten "Treppenstufen" -Lösungsstil verwenden, je nachdem, welcher für Ihren Code Golfspieler ist.
- Es ist entweder ein vollständiges Programm oder eine Funktion zulässig. Bei einer Funktion können Sie die Ausgabe zurückgeben, anstatt sie zu drucken.
- Fügen Sie nach Möglichkeit einen Link zu einer Online-Testumgebung hinzu, damit andere Benutzer Ihren Code ausprobieren können!
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.
Beispiele
n=4
xQxx
xxxQ
Qxxx
xxQx
n=7
xxQxxxx
xxxxxxQ
xQxxxxx
xxxQxxx
xxxxxQx
Qxxxxxx
xxxxQxx
n=10
xxxxQxxxxx
xxxxxxxxxQ
xxxQxxxxxx
xxxxxxxxQx
xxQxxxxxxx
xxxxxxxQxx
xQxxxxxxxx
xxxxxxQxxx
Qxxxxxxxxx
xxxxxQxxxx