(Nonostante le oltre 60 domande taggate a scacchi , non abbiamo una semplice sfida di n-regine.)
Negli scacchi, l' N-Queens Puzzle è descritto come segue: date una n x nscacchiera e delle nregine, disponete le regine sulla scacchiera in modo che non vi siano due regine che si minacciano a vicenda. Di seguito è una soluzione di esempio per n = 8, presa in prestito da Wikipedia.
Oppure, nel rendering ASCII:
xxxQxxxx
xxxxxxQx
xxQxxxxx
xxxxxxxQ
xQxxxxxx
xxxxQxxx
Qxxxxxxx
xxxxxQxx
La sfida qui sarà quella di prendere input ne output di una rappresentazione ASCII di una soluzione al npuzzle -Queens. Poiché esistono più soluzioni possibili (ad esempio, almeno una rotazione o una riflessione), il codice deve solo generare una soluzione valida.
Ingresso
Un singolo intero positivo ncon n >= 4 in qualsiasi formato conveniente . (n = 2 e n = 3 non hanno soluzioni e n = 1 è banale, quindi sono esclusi)
Produzione
La rappresentazione ASCII risultante di una soluzione al puzzle delle regine N, come indicato sopra. È possibile scegliere due valori ASCII distinti per rappresentare spazi vuoti e regine. Ancora una volta, questo può essere emesso in qualsiasi formato adatto (stringa singola, un elenco di stringhe, un array di caratteri, ecc.).
Regole
- Le nuove righe o spazi iniziali iniziali o finali sono tutti facoltativi, così come gli spazi bianchi tra i caratteri, a condizione che i caratteri stessi si allineino correttamente.
- Puoi utilizzare un algoritmo per calcolare le posizioni possibili o utilizzare lo stile esplicito di soluzione "gradino", a seconda di quale sia il più golfista per il tuo codice.
- È accettabile un programma completo o una funzione. Se una funzione, è possibile restituire l'output anziché stamparlo.
- Se possibile, includi un link a un ambiente di test online in modo che altre persone possano provare il tuo codice!
- Sono vietate le scappatoie standard .
- Si tratta di code-golf quindi si applicano tutte le normali regole del golf e vince il codice più breve (in byte).
Esempi
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



Leggi il numero di regine, q , da stdin e calcola due variabili per un uso successivo:,
avvia il ciclo principale, ripetendo r , il numero di riga, da q fino a 0, diminuendo all'inizio del ciclo, quindi la prima r è q meno 1.
Calcola l'offset della regina in ogni riga con la seguente formula:
Caratteri di spazio offset di output per indentare la posizione della regina per la riga corrente, più uno spazio aggiuntivo solo perché semplifica il loop di output.
Invia a
Verifica se r è zero, nel qual caso abbiamo raggiunto la fine della scheda e possiamo uscire, altrimenti ripetiamo nuovamente il loop principale.