Esiste una variante del noto problema delle regine N che coinvolge regine e cavalieri e si dice che sia "considerevolmente più difficile" 1 . La dichiarazione del problema è la seguente:
Devi posizionare un numero uguale di cavalieri ♞ e regine ♛ su una scacchiera in modo tale che nessun pezzo attacca altri pezzi. Qual è il numero massimo di pezzi che puoi posizionare sulla scacchiera e in quanti modi diversi puoi farlo?
In questa sfida di code-golf , ti verrà dato un input n tra 3 e 32 (in un modo che sia il più adatto alla tua lingua). Per una data n , potrebbero esserci zero o più soluzioni al problema precedente. Nel caso in cui non ci sia soluzione, è necessario generare / restituire nulla ( zero , stringa vuota , falsa , ...). Altrimenti, devi dare due risultati:
- Una scheda soluzione (vedi sotto) per dimensioni n in cui non è possibile aggiungere un pezzo degli scacchi regina o cavaliere senza che un pezzo venga attaccato. Ci deve essere un numero uguale di regine e cavalieri .
- La fonte di un programma da eseguire che non accetta input e fornisce (i) un'altra soluzione (o nulla ) per la stessa dimensione n , nello stesso formato, nonché (ii) un altro programma per la soluzione successiva (e così via ...).
Nota che:
- La sequenza dei programmi non deve mai restituire la stessa scheda due volte, deve coprire tutte le possibili soluzioni al problema della dimensione n e alla fine deve terminare (senza produrre output).
- È possibile restituire due valori, restituire uno e stampare l'altro oppure stampare i due valori restituiti.
- Tuttavia , se si stampa sia la scheda che il programma successivo, la scheda non deve essere considerata parte del programma successivo (si consiglia di stampare la scheda in commento o utilizzare sia l'output standard che i flussi di errore).
- Il valore del programma come valore di ritorno deve essere una stringa, non una chiusura.
Formato scheda
- Una tavola è un quadrato di dimensioni n .
- Una cella di bordo può essere vuota, una regina o un cavaliere.
- È necessario scegliere valori distinti per ogni tipo di cella (ovvero è possibile utilizzare simboli diversi da Q, N quando si stampa la scheda).
- Se si restituisce una scheda non stringa, deve essere una raccolta ordinata dei n 2 valori della scheda (ad esempio matrice, vettore o elenco in ordine riga / colonna-maggiore, ...).
Se si stampa la scheda, è possibile stamparla al quadrato o come una linea. Ad esempio, una scheda della soluzione di dimensione 4 può essere stampata come segue (spazi non richiesti; simboli a propria discrezione):
Q - - - - - - - - - - - - - N -
In tal caso, puoi anche generare:
♛ · · · · · · · · · · · · · ♞ ·
... ma questo è sufficiente:
Q-------------N-
Non importa se si scorre tra le celle in un ordine di riga maggiore o di colonna maggiore, poiché esistono soluzioni simmetriche. Ad esempio, le soluzioni per n = 4 sono:
Q------N-------- Q----------N---- Q------------N-- Q-------------N- -Q----------N--- -Q------------N- -Q-------------N --Q---------N--- --Q----------N-- --Q------------N ---QN----------- ---Q----N------- ---Q---------N-- ---Q----------N- ---NQ----------- ----Q------N---- ----Q----------N N------Q-------- -------QN------- -------Q----N--- ---N----Q------- -------NQ------- --------Q------N N----------Q---- ----N------Q---- -----------QN--- -N----------Q--- --N---------Q--- -------N----Q--- -----------NQ--- N------------Q-- --N----------Q-- ---N---------Q-- N-------------Q- -N------------Q- ---N----------Q- -N-------------Q --N------------Q ----N----------Q --------N------Q
Puoi anche guardare le soluzioni per n = 5 come matrici ; le schede contengono #
, q
e n
simboli, che sono cellule vuote di diversi tipi (vedi la mia risposta qui di seguito). Conto 2836 schede per n = 6 , come nella risposta di Sleafar (ho introdotto un bug nel ridurre il conteggio dei byte, ma ora è stato corretto).
Mille grazie a Sleafar per aver trovato non uno ma due bug nel mio codice.
Punto
Il codice più corto in byte vince.
Misuriamo la dimensione del primo programma, quello che accetta n .
1 . Queens and Knights , di Roger KW Hui (attenzione! Contiene una soluzione)
-------------------------N--------Q-
non è valida perché è possibile aggiungere più pezzi :) Q--------N---------------N--------Q-
.