(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 n
tabuleiro de xadrez e n
rainhas, 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 n
e n
gerar 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 n
com 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