Tantangan
Tulis program terpendek yang, ketika dikompilasi atau dijalankan, menghasilkan pesan kesalahan fatal yang lebih kecil dari program itu sendiri. Pesan kesalahan mungkin tidak dihasilkan oleh program itu sendiri, seperti Pythonraise
. Jawaban yang valid harus menyertakan kode dan pesan kesalahan. Jawaban terpendek yang valid menang.
Tidak ada pesan kesalahan tidak dihitung sebagai pesan kesalahan.
Contoh (Lua)
Kode (46 byte):
[
--aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Kesalahan (45 byte):
[string "[..."]:1: unexpected symbol near '['
code-golf
error-message
pengguna72528
sumber
sumber
__main__.CodeException: Raised an &rror.
" kesalahan saya atau ini: "Raised an &rror.
"Jawaban:
ed , 3 byte
Catatan: Sebagian besar jawaban di sini mengabaikan baris baru yang tercetak yang dicetak sebagai bagian dari pesan kesalahan dalam hitungan mereka. Tetapi saya tidak melihat apa pun dalam pertanyaan untuk membenarkan mengabaikannya, dan penulis berkomentar bahwa baris baru harus dimasukkan . Jadi kecuali pertanyaannya diubah, saya akan memasukkannya.
Kode (dengan mengikuti baris baru):
Kesalahan (dengan mengikuti baris baru):
sumber
C (Linux modern), 19 byte
Akan melakukan kesalahan saya yang terkenal tapi benar-benar manusiawi mencurinya.
Output (18 byte):
sumber
main(){main();}
)?main(){main();}
tidak dijamin untuk kesalahan-kesalahan.Python 2, 35 byte
Memberikan kesalahan:
sumber
JavaScript (Firefox), 31 byte
Lemparkan kesalahan ini:
Diuji di konsol Firefox 54.0.1 pada Windows 7.
sumber
Python 2 ,
8779 byte-8 byte berkat Zacharý dan Erik the Outgolfer.
Cobalah online!
Pesan kesalahan, 78 byte:
Dengan asumsi kode disimpan dalam file bernama
a
.Ini sebenarnya adalah telur Paskah kecil yang menyenangkan dengan Python. : D
sumber
\s\sFile "<stdin>", line 1\nSyntaxError: not a chance
yang hanya 50 byte [\s
adalah spasi dan\n
merupakan baris baru], sehingga Anda bisa mendapatkan program 51 byte ..Haskell, 13 byte
Simpan sebagai
t.hs
atau nama satu karakter lainnya, kompilasi denganghc
, dan jalankan. Pesan kesalahan (dengan mengikuti baris baru):sumber
Taksi ,
3821 byteMenghasilkan:
Cobalah online!
-17 byte terima kasih kepada Engineer Toast
Mencoba untuk beralih ke "abc", yang tidak ada. Anda akan memiliki
[abc]
suatu tempat.sumber
Switch to plan "abc".
memproduksierror: no such label
. Ini mungkin salah satu dari sedikit tantangan golf kode di mana Taxi mengalahkan beberapa bahasa tradisional.> <> , 26 byte
Cobalah online!
Setiap pesan kesalahan dalam Fish adalah
something smells fishy...
, jadi ini hanya memindahkan pointer ke waktu yang cukup untuk lebih lama dari itu dan mencoba untuk menduplikasi bagian atas tumpukan, yang kosong pada saat itu.sumber
JavaScript (Firefox), 21 byte
Kesalahan (20 byte) :
TypeError: a is null
sumber
Sistem V shell, 25 byte
Pesan kesalahan (23 byte):
"Bukan mesin tik" atau
ENOTTY
kode kesalahan yang didefinisikanerrno.h
pada sistem Unix. Ini digunakan untuk menunjukkan bahwa nomor ioctl (kontrol input / output) yang tidak valid telah ditentukan dalam panggilan sistem ioctl. Di sistem saya, dalam/usr/include/asm-generic/errno-base.h
, saya dapat menemukan baris ini:Dalam Versi 6 UNIX dan yang lebih lama, I / O terbatas pada perangkat terminal yang terhubung serial, seperti teletype (TTY). Ini biasanya dikelola melalui
gtty
danstty
panggilan sistem. Jika seseorang mencoba menggunakan salah satu dari panggilan sistem ini pada perangkat non-terminal,ENOTTY
dihasilkan.Saat ini, secara alami tidak perlu menggunakan teletype. Kapan
gtty
danstty
diganti denganioctl
,ENOTTY
disimpan. Beberapa sistem masih menampilkan pesan ini; tetapi kebanyakan mengatakan "ioctl tidak sesuai untuk perangkat" sebagai gantinya.sumber
QBasic, 11 byte
Ada dua solusi dari 11 byte di QBasic, salah satunya mungkin di-golf lebih lanjut. Pesan kesalahan terpendek yang dimiliki QBasic adalah
overflow
, dan dapat dipicu seperti itu:Ini melempar
overflow
karena maks untuk integer (i%
) adalah32676
. Saya tidak bisa32677
bermain golf tanpa QBasic auto-casting ini terlalu lama ...Kesalahan lain, pada 11 byte, adalah
out of data
. QBasic memilikiDATA
pernyataan yang menyimpan data dalam program, yang nantinya dapat diakses olehREAD
pernyataan. Menerbitkan lebihREAD
dariDATA
yang menyebabkan kesalahan:Perhatikan bahwa pernyataan tersebut diisi dengan komentar untuk menyampaikannya hingga panjang pesan kesalahan. Ya, saya memiliki pesan kesalahan dengan program yang lebih pendek, dan program dengan pesan kesalahan yang lebih pendek ...
sumber
C (Linux Modern), 19 byte
Saya menyarankan ini dalam obrolan, tetapi tidak ada yang mengambil peluang. : P Berikan jawaban lucu untuk MD XF .
Pesan kesalahan, 18 byte
sumber
W_EXITCODE(0, 11) == 11
) dan kode keluar 139 (W_EXITCODE(139, 9) == 139 << 8
). Kerang disetel$?
non-surjektif keWIFEXITED(wstatus) ? WEXITSTATUS(wstatus) : WTERMSIG(wstatus) + 128
, tetapi sebagian besar bahasa mengekspos perbedaannya.WIFEXITED(wstatus)
setaraDIVORCE(alimony)
dengan kebetulan?Javascript (V8), 24 byte
Kesalahan, 23 byte:
Diuji pada Nodejs v6.11.0 dan Google Chrome v59.0.3071.115 .
Cobalah online!
Perhatikan bahwa TIO memperluas pesan kesalahan.
sumber
TrumpScript , 30 byte
Pesan eror:
sumber
PowerShell ,
215189 byteCobalah online!
Jadi, PowerShell memiliki ... verbose ... pesan kesalahan. Selain itu, sebagian besar pesan kesalahan non-sintaks adalah Pengecualian Runtime, yang berarti bahwa itu non-fatal, yang mengurangi masalah ini sehingga perlu menemukan kesalahan penguraian singkat.
Saya pikir ini adalah salah satu yang terpendek, jika bukan yang terpendek,@TessellatingHeckler telah menunjukkan ini adalah kesalahan penguraian terpendek, dan masih berbobot dalam188
bytes hanya untuk pesan kesalahan. Jadi pada dasarnya kita perlu menambahkan cukup1
untuk mencapai189
byte "kode."Menjalankan ini secara lokal
c:\a.ps1
misalnya, akan mengurangi jumlah byte oleh segelintir karena itu hanya path file yang lebih pendek, tetapi kemudian tidak tersedia pada TIO.Menghasilkan kesalahan:
sumber
[]
yang terlihat seperti kesalahan yang lebih pendekMissing type name after '['
dan tergantung pada bagaimana tepatnya Anda menghitung bisa sekitar 190 - tio.run/##K8gvTy0qzkjNyfn/PzqWy3Dogv//AQ (diambil dari string parser di sini yang terlihat seperti kesalahan parser terpendek bagi saya([xml](gc .\ParserStrings.resx)).root.data.value | sort { $_.length } -Desc
).Commodore 64 Basic, 15 byte
Menghasilkan
(Catat dua spasi dalam pesan kesalahan, di mana program memiliki tiga)
?SYNTAX ERROR
diikat dengan?VERIFY ERROR
sebagai pesan kesalahan terpendek ketiga yang dapat dihasilkan C64 Basic, dan terpendek yang dapat dipicu oleh kode (pesan terpendekBREAK IN 1
,, membutuhkan interaksi pengguna, sementara?LOAD ERROR
membutuhkan kaset atau floppy disk yang rusak, dan?VERIFY ERROR
membutuhkan kehadiran floppy atau tape yang berisi file yang tidak cocok dengan program dalam RAM).sumber
R ,
2928 byte-1 byte terima kasih kepada JarkoDubbeldam
Melempar kesalahan
Error: object 'a' not found
yaitu 27 byte.Cobalah online!
sumber
a #abcdefghijklmnopqrstuvwxy
KesalahanError: object 'a' not found
adalah satu byte lebih pendek.Ruby (
3332 byte)32 byte
Melempar kesalahan (dengan asumsi dalam file bernama "a"):
31 byte
Sunting : Memangkas satu byte dengan menggunakan
&
alih-alih<<
terima kasih kepada Eric , yang juga menghasilkan solusi Ruby yang lebih pendek: http://codegolf.stackexchange.com/a/135087/65905sumber
&
tidak. Rapi! Juga, temukan baik dengan hex melarikan diri. Saya kesulitan menemukan pesan kesalahan fatal yang lebih pendek dan non-stack-trace selain kesalahan sintaks.Brainf ** k, 17 byte, penerjemah ini
Brainf ** k adalah bahasa yang sederhana sehingga hampir setiap penerjemah memiliki pesan kesalahan yang berbeda. Ini digunakan
Memory Error: -1
ketika pointer terlalu banyak bergerak ke kiri dan Anda mencoba operasi lainsumber
Gangguan Umum , 20 byte
Cobalah online!
Pesan eror
sumber
TryAPL, 11 byte
Kode (11):
Kesalahan (10):
sumber
Javascript (Firefox),
2927 bytemelempar
RangeError: invalid date
yang merupakan 24 byte. Diuji pada Firefox 54.0.1 pada Windows 10.sumber
ZX Spectrum Basic, 9 byte
menghasilkan:
Penjelasan:
Saya (luar biasa) menghitung representasi ASCII dari program untuk tujuan panjang, termasuk akhir baris (itu tidak terlalu penting, karena kami selalu bisa menambahkan program yang lebih pendek dengan spasi).
Biasanya, pesan kesalahan ZX Spectrum lebih panjang dan lebih membantu daripada ini - rutinitas ROM pada 0x0008 mengharapkan kode kesalahan mengikuti panggilan kode mesin ke
RST 8
., Dan mengambil beberapa byte acak (deterministik) dari ROM, yang menghasilkan pesan kesalahan yang tidak masuk akal iniM
.5
adalah nomor kesalahan,,
ditambahkan oleh rutin pencetakan kesalahan dan0:1
merupakan baris: posisi perintah kesalahan.sumber
Terong , 53 byte
Keluaran
SyntaxError: Invalid instruction (0) at character 0.
Cobalah online!
sumber
Perl 5 , 5 byte
Menghasilkan baris baru, untuk satu byte.
Cobalah online!
sumber
Perl 5 , 11 byte
Karena saya tidak jelas apakah jawaban saya yang lain mematuhi aturan tantangan, inilah alternatif lain.
Output kesalahan:
Dengan baris baru yang berakhir, selama 6 byte.
Cobalah online!
Untuk beberapa alasan fungsi interpreter internal Perl
Perl_mess_sv
berisi:di mana
CopLINE(cop)
mendapat nomor baris konteks kode saat ini. Jadi jika nomor baris itu terjadi untuk mengevaluasi ke nol, Perl melewatkan menambahkan biasa" at <filename> line <n>"
ke pesan kesalahan.sumber
die
untuk program untuk keluar.raise
?ArnoldC , 150 byte
Cobalah online!
Kesalahan adalah 94 byte (termasuk trailing baris baru):
Diawetkan karena saya pikir ini lebih lucu - spoiler: itu adalah lelucon remaja dang.
ArnoldC , 280 byte
Kodesemu:
Cobalah online!
Menghasilkan kesalahan "tidak ada input". (Hampir semua kesalahan lain di ArnoldC termasuk sebagian besar boilerplate):
279 byte (termasuk trailing newline):
sumber
TI-Basic, 9 byte
Pesan kesalahan terpendek adalah 8 byte masing-masing:
ERR:DATE
,ERR:MODE
,ERR:STAT
, danERR:ZOOM
. Saya tidak mempertimbangkanERR:DATE
karena itu tidak bekerja pada model tanpa jam internal. Juga, saya tidak mendukungERR:ZOOM
karena tampaknya terlalu sulit untuk dipicu.Program (9 byte):
Pesan kesalahan:
ERR:MODE
(8 byte)Program (9 byte):
Pesan kesalahan:
ERR:STAT
(8 byte)sumber
Ruby, 25 byte
Itu latihan yang menyenangkan, terima kasih! Mungkin ada cara untuk mendapatkan pesan kesalahan yang lebih pendek dengan SegFault, tetapi saya tidak dapat menemukannya.
Pesan eror:
24 byte, termasuk baris baru.
Cobalah online!
Ruby, 26 byte
Inilah jawaban saya sebelumnya:
Pesan eror:
25 byte, termasuk baris baru.
sumber
C ++ (pada macOS High Sierra beta), 23 karakter
Output: (22 karakter)
Saya tidak ingat apakah versi sebelumnya dari macOS memberikan
Segmentation fault (core dumped)
respons yang lebih tradisional tetapi menambahkan spasi pada kode untuk pad yang keluar cukup sepele.sumber