Antyferromagnetyzm jest tym, co badacze IBM używali do przeskakiwania z dysku o pojemności 1 terabajta na dysk o pojemności 100 terabajtów z tą samą ilością atomów.
W materiałach wykazujących antyferromagnetyzm momenty magnetyczne atomów lub cząsteczek, zwykle związane ze spinami elektronów, wyrównują się w regularny sposób z sąsiednimi spinami (na różnych sublatach) skierowanymi w przeciwnych kierunkach.
Twoim zadaniem jest napisanie programu, który rysuje kolejność atomów antyferromagnetycznych, jak na powyższym obrazku. Musisz mieć co najmniej cztery pary par, chociaż możesz mieć ich więcej.
Każda para musi być pokazana w następujący sposób, chociaż muszą to być rzeczywiste strzałki :
Góra dół w dół w górę Góra dół
Twój wynik może być w grafice ascii lub graficznej.
Możesz utworzyć tylko funkcję lub cały program, ale musi on wejść i narysować tyle par. Przykłady zawierające tylko słowa :
Wejście: 1
Góra dół w dół w górę Góra dół
Wejście: 2
góra dół góra dół w dół w górę w górę w górę góra dół góra dół
Dopuszczalne strzałki:
↑
i↓
⇅
i⇵
/|\
i\|/
Proszę umieścić swoje odpowiedzi w języku, w formacie X bajtów , ponieważ jest łatwy do odczytania. Wygrywa najmniej bajtów!
^v
?⇅
i⇵
? ( punkty kodu Unicode U + 21C5 i U + 21F5 )Odpowiedzi:
APL,
1812 bajtówTo konstruuje macierz 2n x 3, gdzie n jest wejściem (
⎕
), wypełnionym znakami↑
i↓
. Transpozycja (⍉
) tej matrycy jest następnie drukowana.Możesz spróbować online .
źródło
\x18\x19
jako↑↓
.Pyth, 15 bajtów (11 znaków)
Wypróbuj online: demonstracja
Wyjaśnienie:
źródło
Java,
313296 bajtówOto przykład, który wyświetla strzałki graficznie:
W bardziej czytelnym formacie:
Wyświetlacz dla 5 jako danych wejściowych:
Musisz zmienić rozmiar okna, które się pojawi, aby zobaczyć strzałki. Próbowałem to zrobić, aby żadne z nich nie wyglądało na „odcięte” przez wewnętrzną ramkę okna, ale może tak wyglądać na niektórych platformach.
źródło
CJam, 18 bajtów (14 znaków)
Wygeneruj kolumny (które tworzą powtarzalny wzór), a następnie transponuj.
Wypróbuj online .
Alternatywne 18 bajtów:
Obróć łańcuch
"↑↓"*n
o 0, 1 lub 2 razy.źródło
CJam (15 znaków, 19 bajtów)
Demo online
źródło
Befunge, 71 bajtów
Moja pierwsza odpowiedź, więc proszę, bądź ze mną delikatny: o)
Irytujące problemy z wyrównaniem spowodowały kilka zmarnowanych bajtów, jeśli masz jakieś ulepszenia dla mnie, chciałbym je usłyszeć!
Wejście: 4
źródło
CJam, 14 bajtów
Wymaga to terminalu obsługującego, który renderuje stronę kodową 850 w następujący sposób:
Nie spiczasta część kodu okazała się identyczna z alternatywną wersją @ Sp3000 .
CJam, 17 bajtów
Cheaty wersja z podwójną strzałką, z kredytami dla @DigitalTrauma.
Wypróbuj online.
źródło
Pyth, 16 bajtów (12 znaków)
Przykład:
źródło
Python 2,
131122 bajtówCóż ... Chyba pokonałem
CJava?Wybrałem wysokość
32
strzał, która jest dość duża, więc po chwili żółw zaczyna rysować poza ekranem. Jeśli chcesz, aby wszystko pasowało do dużych nakładów, możesz zmniejszyć strzałki, zastępując32
s, lub użyćscreensize()
(nie jestem pewien, czy na wyjściu poza ekranem jest meta post ...)źródło
GNU sed, 25 bajtów
Znalazłem symbole strzałek
⇅
i⇵
Unicode, które pozwalają na dalsze skracanie i zostały one dopuszczone przez ten komentarz :Dane wejściowe są jednostkowe , więc np. 4 to
1111
:Previous answer in case
⇅
and⇵
are disallowed:GNU sed, 39 bytes
źródło
sed
). This is particularly handy for this question, because the output of the required length can easily be generated from the unary input. Cheaty? perhaps - but the meta answer consensus seems to be OK with it.Swift 2, 66 bytes
If Swift would be just a liiiitle bit less verbose, it wouldn't even be that bad for golfing (I'm looking at you, named parameter
appendNewline
)źródło
Ruby 39 (or 44) characters, 43 (or 48) bytes
According to https://mothereff.in/byte-counter the arrow characters are 3 bytes each!
An anonymous function which returns an array. If the function has to print the array, it should end with
puts a
for 5 more bytes.Example use
Gives
źródło
J,
413532 bytes (28 characters)I have never programmed anything in J so this took me a while, and it's most definitely not the best way to do it.
This waits for you to input a number when run before outputing the arrows.
źródło
Javascript (ES6),
66635347 bytes (62554941 characters)Props to Digital Trauma for finding the ⇅ and ⇵ characters and allowing me to shave off more bytes.
źródło
J, 30 bytes
źródło
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
źródło
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:źródło
CoffeeScript, 60 bytes (58 chars)
Comprehensions make it easy without recursion:
źródło
Ruby, 33 bytes
As a function:
Example:
Ruby, 37 bytes
Full program which takes input from stdin:
źródło
><>, 55 Bytes
Try it online here, inputting the desired length as initial stack value.
Non ⇅⇵ solution, 59 Bytes:
źródło
BBC BASIC, 70 bytes
This can probably be golfed more
źródło
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:
źródło
Python 2, 47 bytes
Port of my BBC BASIC answer, taking advantage of how Python can easily reverse strings.
źródło
C,
1178985 bytesUngolfed:
źródło
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:
źródło
Java, 150 bytes
Output of
g(2)
:źródło
Python 2,
4555 bytesedit: modified arrows
Pretty straightforward approach. Doesn't work with unicode arrows, though.
źródło
^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
źródło
Tcl 49 bytes
No winner but at least it's competitive:
źródło
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...
źródło