(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 nSchachbrett und nKö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, neine 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 nmit 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



Lesen Sie die Anzahl der Damen, q , von stdin und berechnen Sie zwei Variablen für die spätere Verwendung:
Starten Sie die Hauptschleife, indem Sie r , die Zeilennummer, von q bis 0 durchlaufen und am Anfang der Schleife dekrementieren, also das erste r ist q minus 1.
Berechnen Sie den Versatz der Dame in jeder Zeile mit der folgenden Formel:
Geben Sie versetzte Leerzeichen aus, um die Position der Dame für die aktuelle Zeile einzurücken, plus ein zusätzliches Leerzeichen, nur weil dies die Ausgabeschleife vereinfacht.
Geben Sie das
Testen Sie, ob r Null ist. In diesem Fall haben wir das Ende des Boards erreicht und können es verlassen. Andernfalls wiederholen wir die Hauptschleife erneut.