Tugas
Anda bertugas membuat kompas, semacam itu.
Bayangkan kode sumber Anda sebagai "jarum" kompas di mana menjalankan berbagai orientasi menghasilkan output yang berbeda.
Orientasi kode sumber yang didukung adalah Utara, Timur, Selatan, dan Barat.
Contoh
Katakanlah Anda memiliki kode sumber:
ABCD
J K
WXYZ
Kami akan menganggap ini sebagai orientasi Utara, berputar 90 derajat searah jarum jam mengarahkan kita ke Timur:
W A
XJB
Y C
ZKD
berputar lagi menunjuk ke Selatan:
ZYXW
K J
DCBA
dan akhirnya, rotasi terakhir ke Barat:
DKZ
C Y
BJX
A W
Ketika dijalankan, masing-masing contoh kode di atas harus menampilkan karakter ASCII tunggal yang dapat dicetak yang Anda pilih.
Catatan
Kode Anda tidak akan menerima input.
Ruang kosong atau garis baru tidak runtuh / hilang saat berputar.
Memimpin / mengikuti garis baru tidak apa-apa dalam output.
Jawaban dapat berupa seluruh program atau fungsi, dengan demikian output ke STDOUT atau mengembalikan hasil fungsi.
Standar kode-golf aturan berlaku; jawaban terpendek dalam byte menang!
sumber
Jawaban:
Jelly , 2 byte
Cobalah online!
Perhatikan bahwa entri utama untuk program Jelly adalah tautan terakhirnya, di mana karakter baris baru mana pun akan memecah tautan), tak satu pun dari program dua baris ini yang benar-benar mengakses tautan teratas mereka.
Keempat program lengkap, yang semuanya secara implisit mencetak hasilnya, adalah:
Utara :
Timur :
Selatan :
Barat :
sumber
Japt ,
32 byteEntah bagaimana, entah bagaimana , saya menemukan solusi 2-byte yang sangat aneh ...
Output utara
0
:Karena tidak ada input implisit, maka defaultnya adalah
0
.g
pada nomor mengembalikan tanda nomor terlepas dari argumennya ("y"
dalam hal ini).Output timur
2
:Dalam program multi-baris, baris pertama mengatur input ke hasilnya. Ini pada dasarnya adalah no-op, karena
g
on0
is0
. Kemudiany
kembalikan GCD dari0
dan ... karena tidak ada argumen, defaultnya adalah2
(terima kasih, @Oliver !). Ini memberi2
sebagai output.Output selatan
g
:y
, seperti sebelumnya, adalah GCD. Karena gcd (0, x) adalah x untuk nilai apa pun,y
on0
mengambil kebebasan hanya dengan mengembalikan argumennya. Dalam hal ini, argumennya adalah"g"
, yang merupakan hasilnya.Output barat
1
:y
pada 0, seperti sebelumnya, kembali2
. Ini kemudian diteruskan keg
, yang (sebagaimana telah dibahas) adalah fungsi tanda pada angka. Karena itu, hasilnya adalah1
.sumber
Java (OpenJDK 8) ,
73094421855 byte-2888 bytes berkat Leaky Nun
-3566 bytes berkat Wheat Wizard
Cobalah online!
Versi lama
Pendekatan langsung dengan komentar yang membungkus kode ^ 2 persegi, ini dapat dilakukan dalam hampir semua bahasa.
contoh (lebih mudah dibaca) dengan python
sumber
interface M{static void main(String[]a){System.out.println(0);}}
sebagai gantinya untuk menyimpan beberapa byte.Brain-Flak , 33 byte
Cobalah online!
Brain-Flak , 33 byte
Cobalah online!
Brain-Flak , 36 byte
Cobalah online!
Brain-Flak , 38 byte
Cobalah online!
Brain-Flak , 41 byte
Cobalah online!
sumber
Alice , 17 byte
Keluaran
1
. Cobalah online!Keluaran
x
. Cobalah online!Keluaran
5
. Cobalah online!Keluaran
3
. Cobalah online!sumber
Befunge,
1713 byteSaya pikir Befunge akan menyenangkan untuk masalah geometris. Ada solusi 4x4 sepele yang mirip dengan yang lain di sini (saya perlu 3 perintah) tapi saya berhasil sedikit lebih baik.
Sunting: lupa tentang baris baru
Sunting 2: sadar saya bisa membuat kucing
Sunting 3: kucing sudah mati
RIP kitty: <
sumber
05AB1E ,
53 byteUtara , Timur , Selatan , Barat
sumber
Y'X
akan berhasil, tapi saya masih harus mencobanya.Y'X
juga valid. Masih mencari 2 byte; tidak ada 'perintah dot' yang berfungsi untuk itu, jadi saya ragu itu ada.10
akan bekerja jika mereka mengizinkan beberapa karakter untuk sebuah output; P. *C (gcc) ,
283279209 byteCobalah online!
Trik komentar lama yang sama di sini, tapi setidaknya, di C ini tidak mendapatkan huuuge ;)
W
arah tetap dan -70 (!) byte berkat komentar dari ETHproductionssumber
);}
ke baris di bawah ini, seperti itu (saya belum menguji rotasi)W
program dalam pengaturan Anda saat ini gagal karena ada tambahansn
setelah kode aktual. Tampaknya Anda dapat memperbaikinya dengan mengubah garis miring tepat sebelumpm
di baris paling atas menjadi titik koma.Labirin , 9 byte
Cetakan
0
. Cobalah online!Cetakan
3
. Cobalah online!Cetakan
1
. Cobalah online!Cetakan
2
. Cobalah online!Penjelasan
Setiap program dimulai pada non-spasi pertama dalam urutan membaca (yaitu karakter kiri atas atau tengah tengah), bergerak ke timur. Untuk program pertama:
Untuk program kedua:
Untuk program ketiga:
Untuk program keempat:
sumber
Wumpus , 7 byte
Cetakan
0
. Cobalah online!Cetakan
1
. Cobalah online!Cetakan
3
. Cobalah online!Cetakan
2
. Cobalah online!Penjelasan
Program pertama cukup mudah:
O
mencetak nol implisit dan@
mengakhiri program.Mulai dari program kedua, kita perlu melihat tata letak kotak segitiga untuk memahami aliran kontrol:
Untuk program ketiga:
Yang keempat adalah di mana ia menjadi sangat funky. Garis putus-putus menunjukkan sel yang tidak dieksekusi karena dilewati oleh
$
:sumber
PowerShell ,
2011 byteMenyalahgunakan komentar (
#
) seperti orang gila, dan fakta bahwa satu nomor yang ditempatkan pada pipeline mendapat output apa adanya. Cetakan di atas1
. Cobalah online!Dari sini, Anda dapat dengan mudah melihat bahwa setiap rotasi hanya menghasilkan satu angka yang ada di "kiri" komentar, dan hanya ada satu angka yang akan menjadi output per rotasi.
Disimpan 9 byte berkat Wheat Wizard !
sumber
Starry , 34 byte
Atau dengan spasi yang ditampilkan sebagai tanda hubung sehingga Anda dapat melihatnya:
Cobalah online!
Perintah-perintah di Starry adalah
+
,.
dan beberapa hal lain, dan apa yang mereka lakukan ditentukan oleh berapa banyak ruang yang ada sebelum mereka: a+
dengan n spasi mendorong n −5 ke stack, dan.
dengan sejumlah spasi bahkan mencetaknya. Ituz
s dan baris baru diabaikan seluruhnya.Ada 6 spasi sebelum yang pertama
+
sehingga mendorong 6−5 = 1, dan.
mencetaknya.Dan rotasi:
Cobalah online! Ini mencetak "8".
Cobalah online! Ini mencetak "2".
Cobalah online! Dan ini mencetak "3".
sumber
dc , 9 byte
Cobalah online!
Saya pikir kejelasannya adalah bagian dari pesona.
sumber
Batch, 90 byte
Batch tidak benar-benar memiliki karakter komentar. Untuk komentar seluruh baris,
:
berfungsi, karena memperkenalkan label, tetapi saya masih membutuhkan sesuatu untuk menghentikanecho
perintah sementara menjadi no-op ketika dibalik.&:
tampaknya berfungsi, itulah yang saya butuhkan di sini, tetapi itu benar-benar membingungkan Batch, keliru jika saya tidak meletakkan:
sebelum@
pada baris berikutnya, dan juga entah bagaimana lupa untuk mencetak baris baru.sumber
MATLAB,
29 17 511 byteSetelah menyadari bahwa pertanyaan yang dipanggil untuk karakter ASCII tunggal bukan hanya keluaran yang berbeda, berikut adalah pendekatan MATLAB yang akan melakukan hal itu:
Ini secara implisit akan mencetak 1, 2, 3, atau 4 tergantung pada rotasi.
sumber
Kardinal ,
20 17 1211 byteCobalah online!
Selama ini dan tidak ada yang menjawab di Kardinal? Ini output pertama
0
.Timur
Cobalah online!
Keluaran
1
.Selatan
Cobalah online!
Menghasilkan spasi.
Barat
Cobalah online!
Keluaran
v
.sumber
SOGL V0.12 , 4 byte
Keluaran
1
, Coba Di Sini!Keluaran
H
, Coba Di Sini!Keluaran
5
, Coba Di Sini!Keluaran
6
, Coba Di Sini!sumber
JS, 17 B
Output:
Utara: 2,
Timur: 3,
Selatan: 4,
Barat: 0.33333333333….
(seperti dalam: 2, 3/1, 4, 1/3)
sumber
Maaf, maksud saya:
dan 28B. Dan output sebagai 0,5, 3, 2, 0.
sumber
JavaScript (ES6), 86 byte
Output 0 untuk Utara, 1 untuk Timur, 2 untuk Selatan, dan 3 untuk Barat.
Tampilkan cuplikan kode
sumber
MATL , 11 byte
Cobalah online!
Mari kita mulai ini di MATL. Tantangan utama adalah bahwa MATL gagal jika suatu fungsi membutuhkan input jika stack kosong. Mungkin sesuatu pintar dengan pengubah seperti
X
,Y
,Z
dan&
bisa membuat sesuatu yang lebih pendek, tapi aku tidak bisa menemukan kombinasi yang cocok.Penjelasan: semua karakter mendorong bilangan bulat tunggal pada tumpukan, dan
x
menghapus semuanya kecuali yang terakhir.sumber
Perl, 49 byte
48 byte kode +1 untuk
-p
.Mengasumsikan input kosong yang TIO tidak mendukung, sehingga baris baru ditambahkan di tempatnya dan tidak digunakan. Cetakan N , E , S , W .
Cobalah online!
sumber
C (gcc) , 120 byte
Saya berharap lebih banyak sinergi antar varian.
Utara
Timur
Selatan
Barat
sumber