(Pomimo ponad 60 pytań oznaczonych jako szachy , nie mamy prostego wyzwania dla n-królowych.)
W szachach układanka N-Queens jest opisana w następujący sposób: Biorąc pod uwagę n x nszachownicę i nkrólowe, ułóż królowe na szachownicy, aby żadne dwie królowe nie zagrażały sobie nawzajem. Poniżej znajduje się przykładowe rozwiązanie n = 8pożyczone z Wikipedii.
Lub w renderowaniu ASCII:
xxxQxxxx
xxxxxxQx
xxQxxxxx
xxxxxxxQ
xQxxxxxx
xxxxQxxx
Qxxxxxxx
xxxxxQxx
Wyzwaniem będzie przyjęcie ni wyprowadzenie reprezentacji ASCII rozwiązania nukładanki -Queens. Ponieważ istnieje więcej niż jedno możliwe rozwiązanie (np. Przynajmniej obrót lub odbicie), twój kod musi tylko wygenerować dowolne prawidłowe rozwiązanie.
Wejście
Pojedyncza dodatnia nze n >= 4 w dowolnym, wygodnym formacie . (n = 2 i n = 3 nie mają rozwiązań, a n = 1 jest banalne, więc są wykluczone)
Wynik
Wynikowa reprezentacja ASCII rozwiązania układanki N-królowych, jak opisano powyżej. Możesz wybrać dowolne dwie różne wartości ASCII, które będą reprezentować puste spacje i królowe. Ponownie, można go wyprowadzić w dowolnym odpowiednim formacie (pojedynczy ciąg, lista ciągów, tablica znaków itp.).
Zasady
- Wiodące lub końcowe znaki nowej linii lub białe znaki są opcjonalne, a także białe znaki między znakami, o ile same znaki są poprawnie ustawione w linii.
- Możesz albo użyć algorytmu do obliczenia możliwych pozycji, albo użyć jawnego rozwiązania typu „krok po schodach”, w zależności od tego, który kod jest bardziej golfowy.
- Dopuszczalny jest pełny program lub funkcja. Jeśli funkcja, możesz zwrócić dane wyjściowe zamiast je drukować.
- Jeśli to możliwe, dołącz link do internetowego środowiska testowego, aby inni mogli wypróbować Twój kod!
- Standardowe luki są zabronione.
- To jest golf golfowy, więc obowiązują wszystkie zwykłe zasady gry w golfa, a wygrywa najkrótszy kod (w bajtach).
Przykłady
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



Odczytaj liczbę królowych, q , od stdin i oblicz dwie zmienne do późniejszego użycia:
Uruchom główną pętlę, iterując r , liczbę wierszy, od q do 0, zmniejszając na początku pętli, więc pierwsze r to q minus 1.
Obliczyć przesunięcie królowej w każdym rzędzie za pomocą następującego wzoru:
Wyjściowe znaki spacji przesunięcia, aby wciąć pozycję królowej dla bieżącego wiersza, oraz dodatkowe miejsce tylko dlatego, że ułatwia to pętlę wyjściową.
Wyjście
Sprawdź, czy r wynosi zero, w którym to przypadku dotarliśmy do końca planszy i możemy wyjść, w przeciwnym razie powtórzymy ponownie główną pętlę.