(A pesar de más de 60 preguntas etiquetadas ajedrez , no tenemos un simple desafío n-reinas).
En ajedrez, el Rompecabezas N-Queens se describe de la siguiente manera: dado un n x ntablero de ajedrez y nreinas, coloque las reinas en el tablero de modo que no haya dos reinas amenazándose entre sí. A continuación se muestra una solución de ejemplo n = 8, tomada de Wikipedia.
O, en la representación ASCII:
xxxQxxxx
xxxxxxQx
xxQxxxxx
xxxxxxxQ
xQxxxxxx
xxxxQxxx
Qxxxxxxx
xxxxxQxx
El desafío aquí será tomar la entrada ny salida de una representación ASCII de una solución para el nrompecabezas -Queens. Dado que hay más de una solución posible (por ejemplo, al menos, una rotación o reflexión), su código solo necesita generar una solución válida.
Entrada
Un solo entero positivo ncon n >= 4 cualquier formato conveniente . (n = 2 yn = 3 no tienen soluciones, y n = 1 es trivial, por lo que están excluidos)
Salida
La representación ASCII resultante de una solución para el rompecabezas N-reinas, como se describe anteriormente. Puede elegir dos valores ASCII distintos para representar espacios en blanco y reinas. Una vez más, esto se puede generar en cualquier formato adecuado (cadena única, una lista de cadenas, una matriz de caracteres, etc.).
Reglas
- Las nuevas líneas iniciales o finales o espacios en blanco son opcionales, así como los espacios en blanco entre caracteres, siempre que los caracteres se alineen correctamente.
- Puede usar un algoritmo para calcular las posibles posiciones, o usar el estilo explícito de solución de "escalón", el que sea más apropiado para su código.
- Un programa completo o una función son aceptables. Si es una función, puede devolver el resultado en lugar de imprimirlo.
- Si es posible, incluya un enlace a un entorno de prueba en línea para que otras personas puedan probar su código.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
Ejemplos
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



Lea el número de reinas, q , de stdin y calcule dos variables para su uso posterior:
principal, iterando r , el número de fila, de q a 0, disminuyendo al inicio del bucle, por lo que el primer r es q menos 1.
Calcula el desplazamiento de la reina en cada fila con la siguiente fórmula:
Salida de caracteres de espacio compensado para sangrar la posición de la reina para la fila actual, más un espacio adicional solo porque facilita el bucle de salida.
Salida
Pruebe si r es cero, en cuyo caso hemos llegado al final del tablero y podemos salir, de lo contrario, repetiremos el ciclo principal nuevamente.