Antiferromagnetismus ist das, was IBM-Forscher benutzten, um von einer 1-Terabyte-Festplatte auf eine 100-Terabyte-Festplatte mit der gleichen Anzahl von Atomen zu springen .
In Materialien, die Antiferromagnetismus aufweisen, richten sich die magnetischen Momente von Atomen oder Molekülen, die normalerweise mit den Spins von Elektronen zusammenhängen, in einem regelmäßigen Muster aus, wobei benachbarte Spins (auf verschiedenen Untergittern) in entgegengesetzte Richtungen weisen.
Ihre Aufgabe ist es, ein Programm zu schreiben, das die Reihenfolge der antiferromagnetischen Atome wie im obigen Bild darstellt. Sie müssen in der Lage sein, mindestens vier Sätze von Paaren zu haben, obwohl Sie möglicherweise mehr haben.
Jedes Paar muss wie folgt dargestellt werden, obwohl es sich um tatsächliche Pfeile handeln muss :
oben unten runter rauf oben unten
Ihre Ausgabe kann in ASCII-Grafik oder grafisch erfolgen.
Sie können nur eine Funktion oder ein ganzes Programm erstellen, aber es muss eine Eingabe nehmen und so viele Paare zeichnen. Beispiele mit nur Worten :
Eingabe: 1
oben unten runter rauf oben unten
Eingabe: 2
hoch runter hoch runter runter rauf runter rauf hoch runter hoch runter
Akzeptable Pfeile:
↑
und↓
⇅
und⇵
/|\
und\|/
Bitte geben Sie Ihre Antworten im Format Sprache (X Byte) ein , da sie leicht zu lesen sind. Die geringste Anzahl von Bytes gewinnt!
^v
?⇅
und⇵
? ( Unicode-Codepunkte U + 21C5 und U + 21F5 )Antworten:
APL,
1812 BytesDadurch wird eine 2n x 3-Matrix erstellt, wobei n die Eingabe (
⎕
) ist, die mit den Zeichen↑
und gefüllt ist↓
. Die transponierte (⍉
) dieser Matrix wird dann gedruckt.Sie können es online ausprobieren .
quelle
\x18\x19
wie↑↓
.Pyth, 15 Bytes (11 Zeichen)
Probieren Sie es online aus: Demonstration
Erläuterung:
quelle
Java,
313296 BytesHier ist ein Beispiel, in dem Pfeile grafisch dargestellt werden:
In einem besser lesbaren Format:
Die Anzeige für 5 als Eingabe:
Sie müssen die Größe des angezeigten Fensters ändern, um die Pfeile sehen zu können. Ich habe versucht, es so zu gestalten, dass keines von ihnen am inneren Rand des Fensters "abgehackt" erscheint, aber auf bestimmten Plattformen kann es so aussehen.
quelle
CJam, 18 Bytes (14 Zeichen)
Generieren Sie die Spalten (die ein sich wiederholendes Muster bilden) und transponieren Sie sie.
Probieren Sie es online aus .
Alternative 18 Bytes:
Drehen Sie die Zeichenfolge
"↑↓"*n
um 0, 1 oder 2 Mal.quelle
CJam (15 Zeichen, 19 Bytes)
Online-Demo
quelle
Befunge, 71 Bytes
Meine erste Antwort, also sei bitte sanft mit mir: o)
Ärgerliche Ausrichtungsprobleme führten zu ein paar verschwendeten Bytes. Wenn Sie Verbesserungen für mich haben, würde ich sie gerne hören!
Eingabe: 4
quelle
CJam, 14 Bytes
Dies erfordert ein unterstützendes Terminal, das die Codepage 850 wie folgt darstellt:
Der nicht spitze Teil des Codes entpuppte sich als identisch mit der alternativen Version von @ Sp3000 .
CJam, 17 Bytes
Cheaty Doppelpfeil-Version, mit Credits zu @DigitalTrauma.
Probieren Sie es online aus.
quelle
Pyth, 16 Bytes (12 Zeichen)
Beispiel:
quelle
Python 2,
131122 BytesNun ... ich habe
CJava geschlagen, denke ich?Ich habe die Höhe
32
für die Pfeile gewählt, die ziemlich groß ist. Nach einer Weile beginnt die Schildkröte, außerhalb des Bildschirms zu zeichnen. Wenn Sie möchten, dass alles für große Eingaben passt, können Sie entweder die Pfeile verkleinern, indem Sie das32
s ersetzen , oder verwendenscreensize()
(ich bin nicht sicher, ob es einen Meta-Post auf der Offscreen-Ausgabe gibt ...).quelle
GNU sed, 25 Bytes
Ich habe die
⇅
und⇵
Unicode-Pfeilsymbole gefunden, die mehr Kürzung ermöglichen und die durch diesen Kommentar zugelassen wurden :Die Eingabe ist unär , also ist zB 4
1111
:Vorherige Antwort für den Fall
⇅
und⇵
sind nicht erlaubt:GNU sed, 39 Bytes
quelle
sed
). Dies ist besonders praktisch für diese Frage, da die Ausgabe der erforderlichen Länge leicht aus der unären Eingabe generiert werden kann. Cheaty? vielleicht - aber der Meta-Antwort-Konsens scheint damit einverstanden zu sein.Schnelle 2, 66 Bytes
Wenn Swift nur ein bisschen weniger wortreich wäre, wäre es nicht mal so schlimm zum Golfen (ich sehe dich an, benannter Parameter
appendNewline
)quelle
Ruby 39 (oder 44) Zeichen, 43 (oder 48) Bytes
Laut https://mothereff.in/byte-counter sind die Pfeilzeichen jeweils 3 Bytes!
Eine anonyme Funktion, die ein Array zurückgibt. Wenn die Funktion das Array drucken muss, sollte es mit
puts a
5 weiteren Bytes enden .Beispielgebrauch
Gibt
quelle
J,
413532 Bytes (28 Zeichen)Ich habe noch nie etwas in J programmiert, daher habe ich eine Weile gebraucht, und es ist definitiv nicht der beste Weg, dies zu tun.
Dies wartet darauf, dass Sie beim Ausführen eine Zahl eingeben, bevor Sie die Pfeile ausgeben.
quelle
Javascript (ES6),
66635347 Bytes (62554941 Zeichen)Props to Digital Trauma, um die Zeichen ⇅ und ⇵ zu finden und mehr Bytes zu entfernen.
quelle
J, 30 Bytes
quelle
C
169170162125123105119107 BytesAlso, ich denke, ich könnte es genauso gut versuchen, auch wenn dies offensichtlich nicht der Gewinner ist :)
Golf gespielt:
Ungolfed:
Beispiel:
Aktualisieren:
Sehen Sie es hier laufen
quelle
for(j=0;j++<3;)
und das gleiche miti
i
undj
sind global, also werden sie auf Null initialisiert. Sie können falleni=0
undj=0
.n
als Puffer verwenden:n=getchar();n=atoi(&n);
Oktave, 37 Bytes
BEARBEITEN: korrigiert von der früheren streifenantiferromagnetischen Version. Danke @ beta-decay, dass du meinen Fehler aufgefangen hast.
Definiert eine Funktion
f(n)
. Beispielausgabe:quelle
CoffeeScript, 60 Bytes (58 Zeichen)
Verständnis macht es einfach, ohne Rekursion:
quelle
Ruby, 33 Bytes
Als eine Funktion:
Beispiel:
Ruby, 37 Bytes
Volles Programm, das Eingaben von stdin übernimmt:
quelle
> <>, 55 Bytes
Probieren Sie es hier online aus und geben Sie die gewünschte Länge als Anfangsstapelwert ein.
Nicht ⇅⇵-Lösung, 59 Bytes:
quelle
BBC BASIC, 70 Bytes
Damit kann wohl mehr golfen werden
quelle
C 97 Bytes
Übernimmt die Eingabe vom ersten Befehlszeilenparameter, z
main 4
. Unterstützt bis zu357913940
Paare. In C können Sie keine Multibyte-Zeichen alschar
s verwenden, aber sie funktionieren gut als Zeichenfolgen.Es ist kleiner als eine Funktion, aber die anderen C-Antworten waren vollständige Programme, also habe ich das auch getan. Es wären 69 Bytes:
quelle
Python 2, 47 Bytes
Port meiner BBC-BASIC-Antwort , die ausnutzt, wie Python Strings leicht umkehren kann.
quelle
C
1178985 BytesUngolfed:
quelle
JavaScript (ES6), 66 Byte (62 Zeichen)
Dazu gehören das jeweils drei Byte lange Unicode-Zeichen sowie die ein Byte lange obligatorische Newline.
Verwendet die von dieser Antwort inspirierte Rekursion . Ich habe es nicht rekursiv versucht, aber das Generieren eines definierten Arrays hat zu viele Zeichen gedauert, obwohl vielleicht jemand anderes es besser kann als ich.
Demo
Wie bei allen ES6-Antworten sind sie in Firefox, Edge und Safari 9 nur zum Zeitpunkt des Schreibens nachweisbar:
quelle
Java, 150 Bytes
Ausgabe von
g(2)
:quelle
Python 2,
4555 BytesBearbeiten: Geänderte Pfeile
Ziemlich unkomplizierter Ansatz. Funktioniert allerdings nicht mit Unicode-Pfeilen.
quelle
^v
Pfeile verwenden dürfen, da sie keinen Schwanz habenR
6062 BytesÜbernimmt die Eingabe von STDIN und gibt sie an STDOUT aus. Erstellt ein 3 x (2 * Eingabe) -Array, fügt eine Spalte mit Zeilenumbrüchen hinzu und gibt dann das transponierte Array aus.
Testlauf
quelle
Tcl 49 Bytes
Kein Gewinner, aber immerhin ist es wettbewerbsfähig:
quelle
lmap
stattforeach
string repeat
kann abgekürzt werdenstring re
proc
Nebeneffekt deslmap
Zurückgebens von Werten und des Ersetzens$argv
durch eine aus einem Buchstaben bestehende Variable kann Byte sparen.Swift 2.0, 79 Bytes
Nichts Schlaues ...
quelle