Introdução
Você pode conhecer e amar seu círculo unitário normal. Mas os matemáticos são loucos e, portanto, abstraíram o conceito a qualquer ponto que o satisfaça x*x+y*y=1
. Como os Criptógrafos 1 também são estranhos, eles adoram campos finitos e, às vezes, anéis finitos (não é como se eles tivessem muita escolha), então vamos combinar isso!
O desafio
Entrada
Um número inteiro positivo maior que um na sua codificação favorita. Vamos chamar esse número n.
Saída
Você exibirá a "imagem" (que consiste em n vezes n caracteres) do círculo unitário, modulando o número inteiro de entrada como ASCII-Art usando "X" (letras maiúsculas em latim X) e "" (um espaço). Espaços à direita e novas linhas são permitidos.
Mais detalhes
Você precisa abranger um sistema de coordenadas da parte inferior esquerda para a parte superior direita. Sempre que um ponto cumprir a equação do círculo, coloque um X na posição, caso contrário, coloque um espaço.
A condição para um ponto que deve ser considerado parte da fronteira círculo é:
mod(x*x+y*y,n)==1
.
Aqui está uma rápida ilustração do sistema de coordenadas:
(0,4)(1,4)(2,4)(3,4)(4,4)
(0,3)(1,3)(2,3)(3,3)(4,3)
(0,2)(1,2)(2,2)(3,2)(4,2)
(0,1)(1,1)(2,1)(3,1)(4,1)
(0,0)(1,0)(2,0)(3,0)(4,0)
Se isso lhe ajudar, você também pode inverter a direção de qualquer um dos eixos, mas os exemplos assumem essa orientação.
Quem ganha?
Isso é código-golfe, então o código mais curto em byte vence! Apenas os métodos de E / S padrão são permitidos e todas as brechas padrão são proibidas.
Exemplos
Entrada: 2
X
X
Entrada: 3
X
X
XX
Entrada: 5
X
X
X X
Entrada: 7
X
X X
X X
X
X X
Entrada: 11
X
XX
X X
X X
XX
X
X X
Entrada: 42
X
X X
X X
X X
X X
X
X X X X
X X X X
X
X X
X X
X X
X X
X
X X X X
X
X X
X X
X X
X X
X
X X X X
X X X X
X
X X
X X
X X
X X
X
X X X X
1 Eu sugiro que você dê uma olhada no meu perfil, se você está se perguntando aqui.