(Meskipun 60+ pertanyaan ditandai catur , kami tidak memiliki tantangan n-ratu sederhana.)
Dalam catur, Puzzle N-Queens digambarkan sebagai berikut: Diberikan n x npapan catur dan nratu, atur ratu ke papan catur sehingga tidak ada dua ratu yang saling mengancam. Di bawah ini adalah contoh solusi untuk n = 8, yang dipinjam dari Wikipedia.
Atau, dalam rendering ASCII:
xxxQxxxx
xxxxxxQx
xxQxxxxx
xxxxxxxQ
xQxxxxxx
xxxxQxxx
Qxxxxxxx
xxxxxQxx
Tantangannya di sini adalah untuk mengambil input ndan output representasi ASCII dari solusi untuk npuzzle -Queens. Karena ada lebih dari satu solusi yang mungkin (mis., Setidaknya, rotasi atau refleksi), kode Anda hanya perlu menampilkan solusi yang valid.
Memasukkan
Integer positif tunggal ndengan n >= 4 format apa pun yang nyaman . (n = 2 dan n = 3 tidak memiliki solusi, dan n = 1 adalah sepele, jadi itu dikecualikan)
Keluaran
Representasi ASCII yang dihasilkan dari solusi untuk puzzle N-queens, seperti diuraikan di atas. Anda dapat memilih dua nilai ASCII yang berbeda untuk mewakili ruang kosong dan ratu. Sekali lagi, ini bisa berupa output dalam format yang sesuai (string tunggal, daftar string, array karakter, dll.).
Aturan
- Leading atau trailing newlines atau spasi putih semuanya opsional, serta spasi putih di antara karakter, selama karakter itu sendiri berbaris dengan benar.
- Anda dapat menggunakan algoritme untuk menghitung posisi yang mungkin, atau menggunakan gaya solusi "tangga-langkah" eksplisit, yang mana pun sesuai dengan kode golf Anda.
- Program lengkap atau fungsi dapat diterima. Jika suatu fungsi, Anda dapat mengembalikan output daripada mencetaknya.
- Jika memungkinkan, harap sertakan tautan ke lingkungan pengujian online sehingga orang lain dapat mencoba kode Anda!
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
Contohnya
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



Baca jumlah ratu, q , dari stdin dan hitung dua variabel untuk digunakan nanti:,
Mulai loop utama, iterasi r , nomor baris, dari q ke 0, penurunan pada awal loop, jadi r pertama is q minus 1.
Hitung offset ratu di setiap baris dengan rumus berikut:
Output mengimbangi karakter spasi untuk indentasi posisi ratu untuk baris saat ini, ditambah satu ruang tambahan hanya karena itu membuat loop output lebih mudah.
Keluarkan
Tes jika r adalah nol, dalam hal ini kita telah mencapai ujung papan dan dapat keluar, jika tidak kita ulangi loop utama lagi.