El antiferromagnetismo es lo que los investigadores de IBM utilizaron para saltar de un disco de 1 terabyte a un disco de 100 terabytes en la misma cantidad de átomos.
En los materiales que exhiben antiferromagnetismo, los momentos magnéticos de los átomos o moléculas, generalmente relacionados con los espines de los electrones, se alinean en un patrón regular con los espines vecinos (en diferentes subredes) que apuntan en direcciones opuestas.
Su trabajo es escribir un programa que dibuje el orden de los átomos antiferromagnéticos como la imagen que se muestra arriba. Debe poder tener al menos cuatro conjuntos de pares, aunque puede tener más.
Cada par debe mostrarse de la siguiente manera, aunque deben ser flechas reales :
arriba abajo abajo arriba arriba abajo
Su salida puede ser en arte ascii o salida gráfica.
Puede hacer solo una función o un programa completo, pero debe tomar una entrada y dibujar tantos pares. Ejemplos con solo palabras :
Entrada: 1
arriba abajo abajo arriba arriba abajo
Entrada: 2
arriba abajo arriba abajo abajo arriba abajo arriba arriba abajo arriba abajo
Flechas aceptables
↑
y↓
⇅
y⇵
/|\
y\|/
Ponga sus respuestas en Idioma, formato X bytes , ya que es fácil de leer. ¡La menor cantidad de bytes gana!
^v
?⇅
y⇵
? ( puntos de código Unicode U + 21C5 y U + 21F5 )Respuestas:
APL,
1812 bytesEsto construye una matriz de 2n x 3, donde n es la entrada (
⎕
), llena con los caracteres↑
y↓
.⍉
Luego se imprime la transposición ( ) de esta matriz.Puedes probarlo en línea .
fuente
\x18\x19
como↑↓
.Pyth, 15 bytes (11 caracteres)
Pruébelo en línea: demostración
Explicación:
fuente
Java,
313296 bytesAquí hay un ejemplo que muestra flechas gráficamente:
En un formato más legible:
La pantalla para 5 como entrada:
Tendrá que cambiar el tamaño de la ventana que aparece para ver las flechas. Traté de hacerlo para que ninguno de ellos apareciera "cortado" por el borde interior de la ventana, pero puede parecer así en ciertas plataformas.
fuente
CJam, 18 bytes (14 caracteres)
Genere las columnas (que forman un patrón repetitivo) y luego transponga.
Pruébalo en línea .
Alternativa 18 bytes:
Gire la cadena
"↑↓"*n
0, 1 o 2 veces.fuente
CJam (15 caracteres, 19 bytes)
Demostración en línea
fuente
Befunge, 71 bytes
Mi primera respuesta, así que por favor sé amable conmigo: o)
Problemas de alineación molestos resultaron en algunos bytes desperdiciados, si tiene alguna mejora para mí, ¡me encantaría escucharlos!
Entrada: 4
fuente
CJam, 14 bytes
Esto requiere un terminal de soporte que muestre la página de códigos 850 de esta manera:
La parte no puntiaguda del código resultó ser idéntica a la versión alternativa de @ Sp3000 .
CJam, 17 bytes
Cheaty versión de doble flecha, con créditos para @DigitalTrauma.
Pruébalo en línea.
fuente
Pyth, 16 bytes (12 caracteres)
Ejemplo:
fuente
Python 2,
131122bytesBueno ... supongo que vencí a
CJava.Elegí la altura
32
de las flechas, que es bastante grande, así que después de un tiempo la tortuga comienza a dibujar fuera de la pantalla. Si desea que todo se ajuste a entradas grandes, puede hacer que las flechas sean más pequeñas reemplazando el32
s, o usarscreensize()
(no estoy seguro de si hay una meta publicación en la salida fuera de pantalla ...)fuente
GNU sed, 25 bytes
Encontré los símbolos de flecha
⇅
y⇵
unicode, que permiten más acortamiento y este comentario los ha permitido :La entrada está en unario , por lo que, por ejemplo, 4 es
1111
:Respuesta previa en caso
⇅
y⇵
no están permitidos:GNU sed, 39 bytes
fuente
sed
). Esto es particularmente útil para esta pregunta, porque la salida de la longitud requerida se puede generar fácilmente a partir de la entrada unaria. Cheaty? tal vez, pero el consenso de la meta respuesta parece estar de acuerdo.Swift 2, 66 bytes
Si Swift fuera solo un poco menos detallado, ni siquiera sería tan malo para el golf (te estoy mirando, parámetro con nombre
appendNewline
)fuente
Ruby 39 (o 44) caracteres, 43 (o 48) bytes
De acuerdo con https://mothereff.in/byte-counter, los caracteres de flecha son de 3 bytes cada uno.
Una función anónima que devuelve una matriz. Si la función tiene que imprimir la matriz, debería terminar con
puts a
5 bytes más.Ejemplo de uso
Da
fuente
J,
413532 bytes (28 caracteres)Nunca he programado nada en J, así que esto me llevó un tiempo, y definitivamente no es la mejor manera de hacerlo.
Esto espera a que ingrese un número cuando se ejecuta antes de mostrar las flechas.
fuente
Javascript (ES6),
66635347 bytes (62554941 caracteres)Props to Digital Trauma para encontrar los caracteres ⇅ y ⇵ y permitirme eliminar más bytes.
fuente
J, 30 bytes
fuente
C,
169170162125123105119107 bytesEntonces, creo que podría intentarlo, aunque obviamente este no es el ganador :)
Golfizado:
Sin golf:
Ejemplo:
Actualizar:
Véalo correr aquí
fuente
for(j=0;j++<3;)
y lo mismo coni
i
yj
son globales, por lo que se inicializan a cero. Puedes soltari=0
yj=0
.n
como un búfer:n=getchar();n=atoi(&n);
Octava, 37 bytes
EDITAR: corregido de la versión anterior antiperomagnética de rayas. Gracias @ beta-decay por descubrir mi error.
Define una función
f(n)
. Salida de muestra:fuente
CoffeeScript, 60 bytes (58 chars)
Comprehensions make it easy without recursion:
fuente
Ruby, 33 bytes
As a function:
Example:
Ruby, 37 bytes
Full program which takes input from stdin:
fuente
><>, 55 Bytes
Try it online here, inputting the desired length as initial stack value.
Non ⇅⇵ solution, 59 Bytes:
fuente
BBC BASIC, 70 bytes
This can probably be golfed more
fuente
C, 97 bytes
Takes the input from the first command-line parameter, e.g.
main 4
. Supports up to357913940
pairs. In C you can't use multibyte characters aschar
s but they work fine as strings.It is smaller as a function, but the other C answers were complete programs so I did that too. It would be 69 bytes:
fuente
Python 2, 47 bytes
Port of my BBC BASIC answer, taking advantage of how Python can easily reverse strings.
fuente
C,
1178985 bytesUngolfed:
fuente
JavaScript (ES6), 66 bytes (62 chars)
That includes the Unicode character counted as three bytes each as well as the mandatory newline counted as one byte.
Uses recursion as inspired by this answer. I tried it non-recursively but generating a defined array took too many characters, although someone else might know how to do it better than me.
Demo
As with all ES6 answers, they are demonstrable in Firefox, Edge, and Safari 9 only at time of writing:
fuente
Java, 150 bytes
Output of
g(2)
:fuente
Python 2,
4555 bytesedit: modified arrows
Pretty straightforward approach. Doesn't work with unicode arrows, though.
fuente
^v
arrows as they do not have a tailR,
6062 bytesTakes input from STDIN and outputs to STDOUT. Creates a 3 x (2 * input) array, adds a column of carriage returns and then outputs the transposed array.
Test run
fuente
Tcl 49 bytes
No winner but at least it's competitive:
fuente
lmap
instead offoreach
string repeat
can be abbreviated tostring re
proc
retrieving a side effect oflmap
returning values and replacing$argv
by someone one-letter variable may save bytes.Swift 2.0, 79 bytes
Nothing clever...
fuente