Tujuan dari tantangan ini adalah untuk menulis sebuah program di mana panjang ketiganya sama persis:
- panjang kode sumber
- panjang output yang dicetak ke output standar
- panjang peringatan kompiler yang dihasilkannya dengan kompiler (tidak diubah) pilihan Anda
Pemenang adalah kode terpendek untuk memenuhi ketiga kriteria, dan harus memiliki setidaknya 1 karakter.
Untuk memperjelas, jika output memiliki kurang dari tiga karakter yang berbeda, ia mendapat penalti 5 poin yang ditambahkan pada panjang masing-masing karakter (jadi +10 jika hanya tipe tunggal, +5 untuk dua).
(Baris baru dihitung sebagai 1 atau 2 karakter, pilihan Anda, tetapi harus konsisten melalui ketiga kriteria. Memimpin dan mengekor spasi putih diabaikan di semua baris dalam ketiga kriteria)
Dalam hal skor yang sama, yang mencetak hasil paling menarik (bukan sampah) adalah pemenangnya.
Jawaban:
Bash, 23 karakter
Kesalahan:
Sumber:
Keluaran:
Brainf * ck, 32 karakter
Kode ini dijalankan sekitar 3 detik dan berhenti dan menampilkan kesalahan dan keluaran berikut.
Kesalahan:
Sumber:
Output: (Hexdump)
C, 35 karakter
Peringatan:
Sumber dan Output:
PHP, 50 karakter
Peringatan:
Sumber dan Output:
sumber
C - 48 karakter
Catatan: termasuk baris terakhir (gaya Unix).
Output dari
gcc a.c
dibaca:Keluaran dari
a.out
sebagian besar karakter non-cetak, jadi inilah yang terlihat setelah menyalurkan melalui hexdump:sumber
main(i){i='\z';while(i-->74)putchar(i);}
- tetapi mengurangi ukuran program sebenarnya kontra-produktif.JavaScript, 63
66Outputnya adalah:
Di Chrome, kesalahannya adalah:
sumber
Visual Basic .NET, 185
Astaga,
vbc
cukup bertele-tele dengan peringatan kompilasi. Bagaimanapun, kodenya adalah ini:(Perhatikan bahwa itu seharusnya tab, bukan spasi.)
Outputnya adalah ini:
Dan peringatan kompiler adalah ini:
(Kali ini, sebenarnya empat spasi, bukan tab.)
sumber
Zsh , 20 byte
Masalah yang kita hadapi di sini disinggung dalam komentar di atas: Zsh mencetak nama program di samping nomor baris sebelum setiap kesalahan. Solusi di sini menggunakan nama file satu karakter untuk menyalahgunakan ini. Saya telah membungkusnya dalam skrip pembantu untuk menunjukkan dengan tepat apa yang dicetaknya, dan digunakan
wc -c
pada stderr, stdout, dan file sumber.Output:
569Xcatcatcatcatcat
diikuti olehkesalahan baris baru :
s:[:2: ']' expected
diikuti oleh baris baruEDIT: Alternatif solusi 20 byte tanpa batasan file:
Cobalah online!
Zsh ,
zsh -x
, 10 bytes-x
flag memungkinkan xtrace. Ini lagi membutuhkan nama file karakter tunggal. Cobalah online!Zsh
zsh -JNTwEDY
, 12 byte-flag
Jawaban terpendek tanpa persyaratan nama file. Atur lebih banyak bendera, dan$-
cetak semuanya. Cobalah online!sumber
JavaScript (Firefox 54), 34 byte
Output:
Dan itu mengirimkan peringatan ini ke konsol browser:
Sepertinya ini di salinan Firefox Developer Edition (54.0a2) saya. Ini dapat bekerja di versi lain dari Firefox juga.
sumber
Ruby, 48 karakter
Keluaran
Peringatkan
(file tersebut r.rb, saya menghapus path, jika Anda menjalankannya dari irb, Anda akan mendapatkan (irb): 1: peringatan ...)
Ada metode peringatkan di Ruby, tetapi ia hanya menampilkan argumennya ke $ stderr, membuatnya tidak terlalu mirip peringatan.
sumber
Python, 57 byte
Penerjemah lain mungkin menampilkan peringatan secara berbeda. Ini hanya diuji untuk bekerja pada TIO.
Cobalah online
Keluaran
Peringatan
Perhatikan bahwa spasi utama tidak dihitung terhadap jumlah byte. Jika spasi terkemuka tidak diabaikan, ini bisa dilakukan dalam 51 byte.
sumber
Javascript (ES6),
3230 bytecetakan
di Chrome, lalu melempar
Solusi 32 byte asli saya:
pertama, cetak
Dan melempar kesalahan
sumber
VBA, 39 Bytes
Tidak yakin apakah ini memenuhi syarat, mengingat kendala penyusun, tetapi:
Input: (di jendela langsung)
* Keluaran termasuk karakter non-cetak yang tidak bermain dengan baik di jendela ini.
sumber
Perl 6 , 10 byte
Cobalah online!
Mencetak
1000000000
ke STDOUT, danBool::True
ke STDERR. Keduanya menghasilkan baris baru, tetapi spasi putih diabaikan dalam tantangan ini.dd
adalah fungsi debugging khusus Rakudosumber