Antiferromagnetisme adalah apa yang para peneliti IBM gunakan untuk melompat dari disk 1 terabyte ke disk 100 terabyte dalam jumlah atom yang sama.
Dalam bahan yang menunjukkan antiferromagnetisme, momen magnetik atom atau molekul, biasanya terkait dengan spin elektron, sejajar dalam pola reguler dengan putaran yang berdekatan (pada sublattice yang berbeda) menunjuk ke arah yang berlawanan.
Tugas Anda adalah menulis program yang menggambarkan urutan atom antiferromagnetik seperti gambar di atas. Anda harus dapat memiliki setidaknya empat pasang pasangan, meskipun Anda mungkin memiliki lebih banyak.
Setiap pasangan harus ditunjukkan sebagai berikut, meskipun mereka harus panah yang sebenarnya :
naik ke bawah turun hingga naik ke bawah
Output Anda dapat berupa output grafis atau ascii.
Anda hanya dapat membuat fungsi atau keseluruhan program, tetapi harus mengambil input dan menggambar banyak pasangan. Contoh hanya dengan kata-kata :
Input: 1
naik ke bawah turun hingga naik ke bawah
Input: 2
naik turun ke bawah turun ke bawah ke atas naik turun ke bawah
Panah yang bisa diterima:
↑
dan↓
⇅
dan⇵
/|\
dan\|/
Masukkan jawaban Anda dalam Bahasa, format X byte , karena mudah dibaca. Jumlah byte terkecil menang!
^v
?⇅
dan⇵
? ( kode kode unicode poin U + 21C5 dan U + 21F5 )Jawaban:
APL,
1812 byteIni membangun 2n x 3 matriks, di mana n adalah input (
⎕
), diisi dengan karakter↑
dan↓
. Transpos (⍉
) dari matriks ini kemudian dicetak.Anda dapat mencobanya secara online .
sumber
\x18\x19
sebagai↑↓
.Pyth, 15 byte (11 karakter)
Cobalah online: Demonstrasi
Penjelasan:
sumber
Java,
313296 byteBerikut ini contoh yang menampilkan panah secara grafis:
Dalam format yang lebih mudah dibaca:
Layar untuk 5 sebagai input:
Anda harus mengubah ukuran jendela yang muncul untuk melihat panah. Saya mencoba membuatnya sehingga tidak satupun dari mereka akan muncul "dipotong" oleh batas dalam jendela, tetapi mungkin terlihat seperti itu pada platform tertentu.
sumber
CJam, 18 byte (14 karakter)
Hasilkan kolom (yang membentuk pola berulang) kemudian transpos.
Cobalah online .
Alternatif 18 byte:
Putar string
"↑↓"*n
sebanyak 0, 1 atau 2 kali.sumber
CJam (15 karakter, 19 byte)
Demo online
sumber
Befunge, 71 byte
Jawaban pertama saya, jadi harap lembut dengan saya: o)
Masalah penyelarasan yang mengganggu menghasilkan beberapa byte yang terbuang, jika Anda memiliki perbaikan untuk saya, saya ingin mendengarnya!
Input: 4
sumber
CJam, 14 byte
Ini membutuhkan terminal pendukung yang membuat kode halaman 850 seperti ini:
Bagian non-runcing dari kode tersebut ternyata identik dengan versi alternatif @ Sp3000 .
CJam, 17 byte
Versi panah ganda Cheaty, dengan kredit ke @DigitalTrauma.
Cobalah online.
sumber
Pyth, 16 byte (12 karakter)
Contoh:
sumber
Python 2,
131122 byteYah ... saya mengalahkan
CJava saya kira?Saya telah memilih ketinggian
32
untuk panah, yang cukup besar, jadi setelah beberapa saat kura-kura mulai menggambar di layar. Jika Anda ingin semuanya sesuai untuk input besar, Anda dapat membuat panah lebih kecil dengan mengganti32
s, atau menggunakanscreensize()
(Saya tidak yakin apakah ada meta pos pada output offscreen ...)sumber
GNU sed, 25 byte
Saya menemukan
⇅
dan⇵
simbol panah unicode, yang memungkinkan lebih banyak shortening dan mereka telah diizinkan oleh komentar ini :Input dalam bentuk unary , jadi misal 4 adalah
1111
:Jawaban sebelumnya dalam kasus
⇅
dan⇵
tidak diizinkan:GNU sed, 39 byte
sumber
sed
). Ini sangat berguna untuk pertanyaan ini, karena output dari panjang yang dibutuhkan dapat dengan mudah dihasilkan dari input unary. Cheaty mungkin - tetapi konsensus jawaban meta tampaknya baik-baik saja dengan itu.Swift 2, 66 byte
Jika Swift akan hanya sedikit lebih sedikit verbose, itu bahkan tidak akan seburuk itu untuk bermain golf (saya sedang melihat Anda, bernama parameter
appendNewline
)sumber
Ruby 39 (atau 44) karakter, 43 (atau 48) byte
Menurut https://mothereff.in/byte-counter karakter panah masing-masing 3 byte!
Fungsi anonim yang mengembalikan array. Jika fungsi tersebut harus mencetak array, itu harus diakhiri dengan
puts a
5 byte lebih.Contoh penggunaan
Memberi
sumber
J,
413532 byte (28 karakter)Saya belum pernah memprogram apa pun dalam J jadi ini butuh beberapa saat, dan itu jelas bukan cara terbaik untuk melakukannya.
Ini menunggu Anda untuk memasukkan angka ketika dijalankan sebelum mengeluarkan panah.
sumber
Javascript (ES6),
66635347 byte (62554941 karakter)Alat peraga untuk Digital Trauma untuk menemukan karakter ⇅ dan ⇵ dan memungkinkan saya untuk mencukur lebih banyak byte.
sumber
J, 30 byte
sumber
C,
169170162125123105119107 byteJadi, saya pikir saya bisa mencobanya, meskipun ini jelas bukan pemenangnya :)
Golf:
Tidak Terkumpul:
Contoh:
Memperbarui:
Lihat lari di sini
sumber
for(j=0;j++<3;)
and the same withi
i
danj
global, jadi mereka diinisialisasi ke nol. Anda dapat menjatuhkani=0
danj=0
.n
sebagai buffer:n=getchar();n=atoi(&n);
Oktaf, 37 byte
EDIT: dikoreksi dari versi strip-antiferromagnetik sebelumnya. Terima kasih @ beta-decay karena menangkap kesalahan saya.
Menentukan fungsi
f(n)
. Output sampel:sumber
CoffeeScript, 60 bytes (58 chars)
Comprehensions make it easy without recursion:
sumber
Ruby, 33 bytes
As a function:
Example:
Ruby, 37 bytes
Full program which takes input from stdin:
sumber
> <>, 55 Bytes
Cobalah online di sini , dengan memasukkan panjang yang diinginkan sebagai nilai tumpukan awal.
Non ⇅⇵ solusi, 59 Bytes:
sumber
BBC BASIC, 70 bytes
This can probably be golfed more
sumber
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:
sumber
Python 2, 47 bytes
Port of my BBC BASIC answer, taking advantage of how Python can easily reverse strings.
sumber
C,
1178985 bytesUngolfed:
sumber
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:
sumber
Java, 150 bytes
Output of
g(2)
:sumber
Python 2,
4555 bytesedit: modified arrows
Pretty straightforward approach. Doesn't work with unicode arrows, though.
sumber
^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
sumber
Tcl 49 bytes
No winner but at least it's competitive:
sumber
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...
sumber