Introducción
Puedes conocer y amar tu círculo de unidad normal. Pero los matemáticos están locos y, por lo tanto, han abstraído el concepto a cualquier punto que les satisfaga x*x+y*y=1
. Debido a que los Criptógrafos 1 también son extraños, les encantan los campos finitos y, a veces, los anillos finitos (aunque no es que tengan muchas opciones), ¡así que combinemos esto!
El reto
Entrada
Un entero positivo mayor que uno en su codificación favorita. Llamemos a este número n.
Salida
Sacará la "imagen" (que consta de n veces n caracteres) del módulo de círculo de la unidad, el entero de entrada como ASCII-Art usando "X" (mayúscula X latina) y "" (un espacio). Se permiten espacios finales y líneas nuevas.
Más detalles
Debe abarcar un sistema de coordenadas de abajo a la izquierda a arriba a la derecha. Siempre que un punto cumpla con la ecuación circular, coloque una X en la posición; de lo contrario, coloque un espacio.
La condición para que un punto para ser considerado parte de la frontera del círculo es:
mod(x*x+y*y,n)==1
.
Aquí una ilustración rápida del 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)
Si le ayuda, también puede invertir la dirección de cualquiera de los ejes, pero los ejemplos asumen esta orientación.
¿Quién gana?
Este es el código de golf, por lo que gana el código más corto en bytes. Solo se permiten los métodos de E / S predeterminados y se prohíben todas las lagunas estándar.
Ejemplos
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 Te sugiero que eches un vistazo a mi perfil si te estás preguntando aquí.
Respuestas:
Bash + GNU Utilities, 59
Entrada
n
dada como un parámetro de línea de comando. El eje y está invertido.Pruébalo en línea .
fuente
Octava ,
4544 bytesPruébalo en línea!
fuente
@(n)[(mod((x=(0:n-1).^2)+x',n)==1)*88,'']
. En ciertos sistemas, Octave trata al personaje0
como un espacioHaskell , 68 bytes
Pruébalo en línea! El eje y se voltea. Uso:
f 42
devuelve una cadena delimitada de nueva línea.Esta es una lista de comprensión anidada donde ambos
x
yy
se extraen del rango[0..n-1]
.last$' ':['X'|mod(x*x+y*y)n==1]
es una forma más corta deif mod(x*x+y*y)n==1 then 'X' else ' '
. La comprensión de la lista se evalúa como una lista de cadenas que se convierte en una sola cadena separada por una nueva líneaunlines
.fuente
Mathematica,
5648 bytesEditar: Gracias a Greg Martin y Martin Ender por guardar 8 bytes.
Solución original:
fuente
X
:)Array
yNorm
:Grid@Array[If[Mod[Norm@{##}^2,x]==1,X]&,{x=#,#},0]&
#^2+#2^2
es el más corto.If
es noneTrue
oFalse
, necesita el cuarto argumento o permanece sin evaluar, peroIf[False,_]
regresaNull
. Extraño.Array
pero no pensé establecer el argumento en una variable.CJam , 23 bytes
Pruébalo en línea!
fuente
JavaScript (ES6), 81 bytes
El eje Y es el reverso del OP.
fuente
Röda , 74 bytes
Pruébalo en línea!
Sin golf:
fuente
Python 3 ,
8783 bytesPruébalo en línea!
El eje y está invertido
fuente
Jalea ,
1413 bytesEl eje x está invertido.
Pruébalo en línea!
Cómo funciona
fuente
cc , 79 bytes
El
y
eje se invierte mientras que elx
eje no.Pruébalo en línea!
fuente
MATL , 13 bytes
El origen está en la parte superior izquierda. Por lo tanto, la salida se invierte en comparación con los ejemplos en el desafío.
Probar en MATL en línea!
Explicación
fuente
Python 3 , (
1029895 bytes)eje y invertido
Pruébalo en línea!
fuente
p(end=' 'if(i*i+j*j)%n-1else'X')
por 95 bytesLithp , 125 bytes
Salto de línea para facilitar la lectura.
Pruébalo en línea!
No es el más corto. Creo que necesito algún tipo de módulo abreviado. Consulte el enlace Pruébelo en línea para obtener más explicaciones, una versión no adaptada y algunas pruebas. Para obtener mejores resultados, expanda la ventana de salida para ver más.
fuente
Python 3 , 82 bytes
Pruébalo en línea!
fuente
GNU APL , 41 caracteres, 59 bytes
Lee un número entero y muestra el círculo.
Sin golf
fuente
Haskell, 115 bytes
El eje y está invertido.
Pruébalo en línea!
Todos esos paréntesis me molestan ...
Explicación
fuente
map
con un<$>
, ¿verdad?J , 20 bytes
Pruébalo en línea!
fuente
GolfScript , 34 bytes
Pruébalo en línea!
Realmente no me gusta usar variables ...
fuente