(Apesar de mais de 60 perguntas marcadas como xadrez , não temos um desafio simples das n rainhas.)
No xadrez, o quebra-cabeça do N-Queens é descrito a seguir: Dado um n x ntabuleiro de xadrez e nrainhas, organize as rainhas no tabuleiro de xadrez para que não haja duas rainhas ameaçando uma à outra. Abaixo está um exemplo de solução para n = 8, emprestado da Wikipedia.
Ou, na renderização ASCII:
xxxQxxxx
xxxxxxQx
xxQxxxxx
xxxxxxxQ
xQxxxxxx
xxxxQxxx
Qxxxxxxx
xxxxxQxx
O desafio aqui será receber ne ngerar uma representação ASCII de uma solução para o quebra-cabeça -Queens. Como há mais de uma solução possível (por exemplo, pelo menos, uma rotação ou reflexão), seu código só precisa gerar uma solução válida.
Entrada
Um número inteiro positivo único ncom n >= 4 em qualquer formato conveniente . (n = 2 en = 3 não têm soluções, e n = 1 é trivial, portanto essas são excluídas)
Resultado
A representação ASCII resultante de uma solução para o quebra-cabeça N-rainhas, conforme descrito acima. Você pode escolher dois valores ASCII distintos para representar espaços em branco e rainhas. Novamente, isso pode ser produzido em qualquer formato adequado (cadeia única, uma lista de cadeias, uma matriz de caracteres, etc.).
Regras
- Novas linhas à esquerda ou à direita ou espaços em branco são opcionais, bem como espaços em branco entre os caracteres, desde que os próprios caracteres estejam alinhados corretamente.
- Você pode usar um algoritmo para calcular as posições possíveis ou usar o estilo explícito de solução "degrau", o que for mais positivo para o seu código.
- Um programa completo ou uma função são aceitáveis. Se uma função, você pode retornar a saída em vez de imprimi-la.
- Se possível, inclua um link para um ambiente de teste on-line para que outras pessoas possam experimentar seu código!
- As brechas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.
Exemplos
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



Leia o número de rainhas, q , de stdin e calcule duas variáveis para uso posterior:,
Inicie o loop principal, iterando r , o número da linha, de q até 0, decrementando no início do loop, então o primeiro r é q menos 1.
Calcule o deslocamento da rainha em cada linha com a seguinte fórmula:
Caracteres de espaço de deslocamento de saída para recuar a posição da rainha para a linha atual, mais um espaço adicional apenas porque facilita o loop de saída.
Saída
Teste se r é zero; nesse caso, chegamos ao final do quadro e podemos sair, caso contrário, repetimos o loop principal novamente.