L'antiferromagnétisme est ce que les chercheurs d'IBM utilisaient pour passer d'un disque de 1 téraoctet à un disque de 100 téraoctet dans la même quantité d'atomes.
Dans les matériaux qui présentent un antiferromagnétisme, les moments magnétiques des atomes ou des molécules, généralement liés aux spins d'électrons, s'alignent de façon régulière avec les spins voisins (sur différents sous-réseaux) pointant dans des directions opposées.
Votre travail consiste à écrire un programme qui dessine l'ordre des atomes antiferromagnétiques comme l'image ci-dessus. Vous devez être en mesure d'avoir au moins quatre ensembles de paires, bien que vous puissiez en avoir plus.
Chaque paire doit être représentée comme suit, bien qu'il s'agisse de flèches réelles :
de haut en bas en bas de haut en bas
Votre sortie peut être en art ascii ou en sortie graphique.
Vous ne pouvez créer qu'une fonction ou un programme entier, mais il doit prendre une entrée et dessiner autant de paires. Exemples avec seulement des mots :
Entrée: 1
de haut en bas en bas de haut en bas
Entrée: 2
haut bas bas vers le bas vers le haut haut bas bas
Flèches acceptables:
↑
et↓
⇅
et⇵
/|\
et\|/
Veuillez mettre vos réponses au format Langue, X octets , car elles sont faciles à lire. Le moins d'octets gagne!
^v
?⇅
et⇵
? ( points de code unicode U + 21C5 et U + 21F5 )Réponses:
APL,
1812 octetsCela construit une matrice 2n x 3, où n est l'entrée (
⎕
), remplie des caractères↑
et↓
. La transposition (⍉
) de cette matrice est ensuite imprimée.Vous pouvez l' essayer en ligne .
la source
\x18\x19
comme↑↓
.Pyth, 15 octets (11 caractères)
Essayez-le en ligne: Démonstration
Explication:
la source
Java,
313296 octetsVoici un exemple qui affiche graphiquement des flèches:
Dans un format plus lisible:
L'affichage pour 5 en entrée:
Vous devrez redimensionner la fenêtre qui apparaît pour voir les flèches. J'ai essayé de faire en sorte qu'aucun d'entre eux n'apparaisse "coupé" par la bordure intérieure de la fenêtre, mais cela peut apparaître de cette façon sur certaines plates-formes.
la source
CJam, 18 octets (14 caractères)
Générez les colonnes (qui forment un motif répétitif) puis transposez.
Essayez-le en ligne .
Alternative 18 octets:
Faites pivoter la chaîne
"↑↓"*n
de 0, 1 ou 2 fois.la source
CJam (15 caractères, 19 octets)
Démo en ligne
la source
Befunge, 71 octets
Ma première réponse, alors soyez gentil avec moi: o)
Des problèmes d'alignement ennuyeux ont entraîné quelques octets gaspillés, si vous avez des améliorations pour moi, j'aimerais les entendre!
Entrée: 4
la source
CJam, 14 octets
Cela nécessite un terminal de support qui rend la page de codes 850 comme ceci:
La partie non pointue du code s'est avérée être identique à la version alternative de @ Sp3000 .
CJam, 17 octets
Version à double flèche tricheuse, avec des crédits à @DigitalTrauma.
Essayez-le en ligne.
la source
Pyth, 16 octets (12 caractères)
Exemple:
la source
Python 2,
131122 octetsEh bien ... j'ai battu
CJava je suppose?J'ai choisi la hauteur
32
des flèches, qui est assez grande, donc après un certain temps, la tortue commence à dessiner hors écran. Si vous voulez que tout convienne à de grandes entrées, vous pouvez soit réduire les flèches en remplaçant les32
s, soit utiliserscreensize()
(je ne suis pas sûr qu'il y ait un méta post sur la sortie hors écran ...)la source
GNU sed, 25 octets
J'ai trouvé les symboles de flèche
⇅
et⇵
unicode, qui permettent plus de raccourcissement et ils ont été autorisés par ce commentaire :L'entrée est unaire , donc par exemple 4 est
1111
:Réponse précédente au cas où
⇅
et⇵
refusée:GNU sed, 39 octets
la source
sed
). Ceci est particulièrement pratique pour cette question, car la sortie de la longueur requise peut facilement être générée à partir de l'entrée unaire. Cheaty? peut-être - mais le consensus de la méta-réponse semble être d'accord avec ça.Swift 2, 66 octets
Si Swift était juste un peu moins verbeux, ce ne serait même pas si mal pour le golf (je vous regarde, paramètre nommé
appendNewline
)la source
Ruby 39 (ou 44) caractères, 43 (ou 48) octets
Selon https://mothereff.in/byte-counter, les flèches sont de 3 octets chacune!
Une fonction anonyme qui renvoie un tableau. Si la fonction doit imprimer le tableau, elle doit se terminer par
puts a
5 octets supplémentaires.Exemple d'utilisation
Donne
la source
J,
413532 octets (28 caractères)Je n'ai jamais rien programmé en J, donc cela m'a pris du temps, et ce n'est certainement pas la meilleure façon de le faire.
Cela attend que vous saisissiez un nombre lors de l'exécution avant de sortir les flèches.
la source
Javascript (ES6),
66635347 bytes (62554941 characters)Props to Digital Trauma for finding the ⇅ and ⇵ characters and allowing me to shave off more bytes.
la source
J, 30 bytes
la source
C,
169170162125123105119107 bytesSo, I though I might as well give this a go, even though this is obviously not the winner :)
Golfed:
Ungolfed:
Example:
Update:
See it run here
la source
for(j=0;j++<3;)
and the same withi
i
andj
are globals, so they're initialized to zero. You can dropi=0
andj=0
.n
as a buffer:n=getchar();n=atoi(&n);
Octave, 37 bytes
EDIT: corrected from the earlier stripe-antiferromagnetic version. Thanks @beta-decay for catching my mistake.
Defines a function
f(n)
. Sample output:la source
CoffeeScript, 60 bytes (58 chars)
Comprehensions make it easy without recursion:
la source
Ruby, 33 bytes
As a function:
Example:
Ruby, 37 bytes
Full program which takes input from stdin:
la source
><>, 55 Bytes
Try it online here, inputting the desired length as initial stack value.
Non ⇅⇵ solution, 59 Bytes:
la source
BBC BASIC, 70 bytes
This can probably be golfed more
la source
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:
la source
Python 2, 47 bytes
Port of my BBC BASIC answer, taking advantage of how Python can easily reverse strings.
la source
C,
1178985 bytesUngolfed:
la source
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:
la source
Java, 150 bytes
Output of
g(2)
:la source
Python 2,
4555 bytesedit: modified arrows
Pretty straightforward approach. Doesn't work with unicode arrows, though.
la source
^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
la source
Tcl 49 bytes
No winner but at least it's competitive:
la source
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...
la source