Latar Belakang
Halo pegolf! Saya ingin mempelajari semua bahasa pemrograman! Tapi saya agak memiliki rentang perhatian yang pendek ... dan menyalin semua contoh Hello World menjadi membosankan ... tapi saya suka api! ^ w ^
Tantangan
Jadi inilah rencananya! Saya ingin Anda semua menulis kode terkecil yang akan dikompilasi, dicetak Goodbye Cruel World!
, dan kemudian crash. Atau, sebagai tantangan twist bonus, cetak Hello World!
dan crash denganGoodbye Cruel World!
Aturan
- Skor Anda akan menjadi jumlah total karakter yang digunakan. Jawabannya harus seluruh program yang dapat dieksekusi.
- Program Anda harus mencetak
Goodbye Cruel World!
ke keluaran, dan kemudian macet (kesalahan tak terduga).- Untuk bonus skor, Anda harus mencetak
Hello World!
ke keluaran sebagai gantinya, tetapi pesan kesalahan juga harus mengandungGoodbye Cruel World!
. Jika Anda menyelesaikan tantangan bonus, Anda dapat membagi skor Anda dengan 2. (Sertakan a! Di akhir skor Anda jika Anda mengklaim bonus!)
- Untuk bonus skor, Anda harus mencetak
- Selama output standar masih dicetak, dan kesalahan standar masih dicetak, urutannya tidak masalah. Selama tidak ada yang bisa menghalangi yang lain terjadi.
- Output harus mengandung konten di atas;
"
seharusnya tidak muncul di output. - Outputnya harus berisi string yang ditentukan, dan tidak ada yang lain.
- Laporan kerusakan dapat berisi apa saja, tetapi untuk mengklaim bonus, regex berikut harus cocok
/Goodbye Cruel World!/mi
(alias, berisi, abaikan case / teks sekitarnya)) - String
Hello World!
danGoodbye Cruel World!
case-sensitive, tetapi sebaliknya harus muncul persis seperti di atas. - Jika bahasa tersebut mampu mogok (tidak dapat mengubah kode keluarnya), bahasa harus mogok. Kalau tidak gunakan standar "laporan kesalahan" (yaitu,
STDERR
) untuk bahasa.
Saya dapat crash Python 3, jadi saya telah menyertakan contoh jawaban Python 3! Sekarang mari kita semua membakar dunia! ^ W ^
code-challenge
hello-world
Tezra
sumber
sumber
as a bonus twist challenge, print "Hello World!" and crash with "Goodbye Cruel World!"
?Jawaban:
Jelly , 12 byte
Cobalah online!
Penjelasan:
Karena divisi integer adalah angka dua, maka secara implisit akan mengambil nilai rantai saat ini sebagai kedua argumen - yang merupakan string. Gangguan karena mengharapkan bilangan bulat.
sumber
A base-250 encoded string
Itu sama-sama keren yang menakutkan yang bisa Anda lakukan itu. X3C, 43 byte
Mencetak string dan kemudian mencoba menggunakan nilai kembali sebagai penunjuk ke string lain untuk dicetak, yang menyebabkan kesalahan segmentasi.
Cobalah online!
C, 42 byte
Terima kasih kepada @Ruslan!
Cobalah online!
Hanya untuk bersenang-senang: C (di Linux 64-bit), 149 byte
Dimodifikasi dari program Hello World ini di sini .
Cobalah online!
sumber
The answer must be a whole executable program.
main(i){i=puts("Goodbye Cruel World!")/0;}
melepas satu byte.i
.puts("")/0;
adalah pernyataan yang benar secara sintaksis.SOGL ,
152517 byte / 2 = 8.5!Penjelasan:
(Ab) menggunakan fakta bahwa SOGL menggunakan STDERR sebagai output debug, jadi di dalamnya ada banyak teks, bersama dengan baris
Jika Anda mengirim STDOUT sketsa Pemrosesan ke file, "Selamat Tinggal Dunia yang Kejam!" akan ada di sana.
sumber
Hello World!
danGoodbye Cruel World!
case-sensitive, tetapi sebaliknya akan muncul persis seperti di atas. ", Anda dapat golf kode Anda dengan menyingkirkan fungsi█
sepenuhnya dan hanya output di semua huruf kecil.> <> , 25 byte
Pada dasarnya ia menambahkan string ke stack (Mundur, terakhir masuk pertama keluar) dan kemudian melakukan yang setara dengan:
Ketika tidak ada karakter yang tersisa di tumpukan (Seluruh string telah dicetak) muncul tumpukan memberikan kesalahan
sumber
#o<"Goodbye Cruel World!"
, yang pada dasarnya sama.sed, 32 byte
i
menyisipkan baris, danw
menulis ke file./dev/full
dalam hal ini karena semua menulis kembaliENOSPC
("Tidak ada ruang yang tersisa di perangkat").Masih membutuhkan satu baris input untuk bekerja.
sumber
Lua,
31, 30 bytepertama kali mencetak 'Selamat Tinggal Dunia yang Kejam!' dan kemudian macet ketika mencoba menambahkan nilai nol dan 0.
Keluaran:
Kredit ke GalladeGuy kurang dari 1 byte
sumber
a=-print"Goodbye Cruel World!"
Python 3 | Nilai:
24,5!2322!Cetak "Hello World", daripada gunakan operator '+' yang salah pada "Goodbye Cruel World!" ke elemen pengembalian NoneType. (hilangkan \ n \ r dari versi sebelumnya)
Cobalah online!
Python 3 | Nilai:
3430Cetak Selamat Tinggal, daripada melakukan operasi unary + yang tidak valid pada hasil cetak (NoneType)
Cobalah online!
sumber
+"Goodbye Cruel World!"
lebih pendek 3 byte dan menghasilkan TypeError.print("Goodbye Cruel World!")/0
lebih pendek untuk yang kedua (3 byte?)R,
2220! byte(44/2)(40/2)Cobalah online!
Keluaran:
Menyimpan dua poin berkat digEmAll
sumber
40/2
Coba online!AWK , 72 byte, Skor 36!
Cobalah online!
AWK
tidak suka mencoba untuk membagi dengan 0.sumber
CJam , 34 byte, skor 17!
Cobalah online! (Lihat panel Debug untuk STDERR)
Penjelasan
Pada TIO, ia menghasilkan pesan kesalahan ini:
sumber
C Preprocessor, 27 byte
Keluaran:
sumber
#Goodbye Cruel World!
APL (Dyalog) , 17,5 byte
Tanpa bonus, 20 byte
Cobalah online!
Perhatikan bahwa kode tidak dikutip, jadi APL mencoba menjalankannya tetapi
World
tidak didefinisikan, menyebabkan crash VALUE ERROR dengan garis kode yang menyinggung yang termasuk dalam pesan kesalahan.Dengan bonus, 35 ÷ 2 = 17,5 byte
Cobalah online!
Pertama-tama mencetak string yang diperlukan, lalu macet seperti program di atas.
Versi bonus lebih canggih, 35 ÷ 2 = 17,5 byte
Cobalah online!
Mencetak string pertama, lalu menjatuhkan lima karakter pertama dari itu (
5↓
), lalu menyatukan itu (,
) ke awalan baru, dan kemudian mencoba mengeksekusi (⍎
) itu, menyebabkan kesalahan yang sama seperti di atas.sumber
Bash
20,5!18,5!Saya tidak akan bash jelly, tapi saya sedikit malu bash saya di bashing skrip bash cepat. 18.5 tidak terlalu buruk untuk bahasa non-golf. (Catatan ini harus berupa skrip, bash interaktif akan mencoba menafsirkannya
!
sebagai pencarian riwayat)Kembali dengan kode kesalahan 127 dan:
Seperti yang diminta no
"
... di mana saja:)
. Seperti yang disarankan olehapricot boy
saya sekarang mencari argumen terakhir dari perintah sebelumnya untuk menyimpan 4 byte.sumber
W=\ World\!;echo Hello$W;"Goodbye Cruel$W"
Goodbye\ Cruel\ !$
, bukan 100% tetapi cukup yakin itu!$
adalah "kata terakhir dari perintah terakhir"TeX, 19!
Untuk memaksa TeX untuk benar-benar menghasilkan file dvi / pdf tanpa intervensi manual, kompilasi dengan
-interaction=nonstopmode
.Itu mencetak
Hello World!
, melempar kesalahan untuk digunakan#
ketika Anda tidak seharusnya dan kemudian berhenti kompilasi dengan\bye
. Namun, apa pun yang terjadi setelah\bye
itu masih output dalam pesan kesalahan, jadi itu berlaku untuk bonus.sumber
WinDBG (Windows XP / Vista Local Kernel Debugging), 33 byte
Peringatan: Ini akan merusak seluruh mesin, bukan hanya program.
Debugging kernel lokal hanya diperbolehkan pada Windows XP dan Vista (tetapi tidak diaktifkan secara default di Vista). Dialog WinDBG pada debugging kernel lokal tidak menyebutkan OS Windows lain jadi saya menganggap itu bahkan tidak dapat diaktifkan untuk itu. Mungkin untuk OS Windows lainnya Anda dapat melampirkan ke mesin jarak jauh untuk debugging kernel, tapi itu mesin jarak jauh yang akan macet jadi saya tidak berpikir solusi ini penting di sana.
sumber
JS (ES5), 46/2 = 23 byte!
Lansiran
Hello, World!
, lalu galat denganUncaught TypeError: Cannot read property 'Goodbye Cruel World!' of undefined
sumber
PowerShell, 26 Bytes
Saya pikir membagi dengan 0 adalah cara termudah untuk melempar kesalahan.
PowerShell, 35/2 = 17,5 Bytes
oleh TessellatingHeckler , melempar kesalahan seperti:
sumber
$w='World!'
(dengan sebuah!
)?"Hello World!";Goodbye Cruel World!
adalah 17,5 byte, melempar pengecualian karena Goodbye tidak dikenali sebagai perintah, dan pesan pengecualian menyertakan garis secara penuh sehingga cocok dengan regex ..'Goodbye Cruel World!';x
akan menghemat dua byte untuk 24Pengoperasian Bahasa skrip Flashpoint , 45/2 = 22,5 byte
Telepon dengan:
Keluaran:
sumber
Fortran (GFortran) , 58/2 = 29 byte!
Cobalah online!
sumber
Node.js, Nilai:
25,524,5!Disimpan 1 poin berkat produk ETH
Program penuh yang benar secara sintaksis yang macet saat runtime karena
console.log()
tidak mengembalikan fungsi.Cobalah online!
sumber
25.5
...: ((Gamma(26.5)
, seperti dengan definisi Mathematica.X
(dan mungkin bahkan baris baru)?Aceto , skor: 21,5!
Cetakan
Hello World!
, lalu macet dengansumber
Pyth,
2824 byteMencetak string, lalu mencoba untuk mendapatkan elemen pertama dari daftar kosong.
Coba ini!
sumber
AHK, 50/2 = 25! (tidak bersaing)
Tidak bersaing karena persyaratan tambahan membuat jawaban tidak valid. Saya tidak dapat menemukan cara untuk membuatnya mengkompilasi, mengeluarkan teks, dan crash. Apa pun yang saya coba gagal setidaknya satu dari persyaratan itu.
Ini adalah solusi paling membosankan yang bisa saya pikirkan. Sebenarnya tidak crash tapi itu bukan persyaratan teknis. Yang harus dilakukan hanyalah menampilkan pesan ke jendela debug. Itu karena saya katakan untuk melakukannya.
sumber
Japt , 22 byte
Cobalah online!
Disimpan 3 byte berkat obarakon dan produk ETH
sumber
Oc"<string>"
dan kemudian mengganti string saat ini dengan versi terkompresi dan dikelilingi oleh backtick.C #, 116/2 = 58 byte!
Versi normal untuk
9487 byte:Disimpan 7 byte berkat @KevinCruijssen.
sumber
int n=0;n/=n;
lebih pendek untuk jawaban pertama Anda.int n=1/0;
, tetapi tampaknya itu tidak mungkin di C # (yang sebenarnya merupakan hal yang baik untuk bahasa, tetapi buruk untuk codegolfing). Btw, mengapa bonus tidak ada di atas? Yang itu lebih pendek.Jelly , 10,5! byte
Cobalah online!
Ini mengeksploitasi perilaku yang tidak terdefinisi, menggunakan string Python (string) alih-alih string Jelly (daftar string 1-char). Konversi dilakukan dengan mengurangi string Jelly dengan tambahan, dan Python
+
menggabungkan dua string, sehingga dua string yang ditambahkan bersama-sama digabungkan dengan Python-wise. Kemudian, ia menggunakan monad yang sesuai (rentang) sehingga Pythonint
dipanggil pada string, menghasilkan kesalahan yang selalu berisiGoodbye Cruel World!
.Penjelasan:
sumber
Ruby,
4342 byte / 2 = 21!Disimpan setengah byte dengan bantuan Alexis Andersen, dengan menggantinya
"String"/0
dengan-"String"
. Ini hanya "berfungsi" dengan versi Ruby lebih rendah dari 2.3, di mana metode minus unary sebenarnya ditambahkan ke kelas String!Dengan Ruby <2.3:
Dengan Ruby> = 2.3:
sumber
-
string, bukan/
ie-"Goodbye crueld World!"
x86-64 Binary Code (dengan panggilan sistem Linux), 43 byte
Membongkar:
Program ini menggabungkan data yang dibutuhkannya (string
"Goodbye Cruel World!\n"
) ke dalam kodenya sendiri. Itu memuat pointer ke string yang menggunakanrip
pengalamatan relatif, dan memanggilwrite
syscall langsung daripada melalui pembungkus glibc, jadi itu sepenuhnya posisi-independen, dan kita dapat dengan mudah mengujinya dengan menanamkan kode ke dalamconst
string dan casting string itu ke suatu fungsi penunjuk. Untuk menghentikan program, saya mengakhirinya denganhlt
instruksi, yang dengan privilege dering 0 akan membungkam prosesor selamanya (atau setidaknya sampai interupsi berikutnya masuk), tetapi dengan privilege ring 3 (khas untuk program pengguna) kami mendapatkan jauh lebih sedikit dramatisSegmentation Fault
.Program Tes:
Keluaran:
Perhatikan bahwa kode 43 byte adalah program lengkap seperti yang ditentukan oleh tantangan, bukan hanya fungsi. Itu tidak tergantung pada
main
fungsi program pengujian untuk berfungsi dengan benar; itu masih akan mencetak string dan crash jika dimuat dan langsung oleh loader.sumber
push
/pop
untuk memuat register. Sebagai contoh, dua instruksi pertama bisapush 1
+pop rax
, yang lebih pendek 1 byte. Kemudian, dua instruksi selanjutnya dapat digantimov edi, eax
, yaitu 2 byte lebih pendek. Samapush
/pop
trik dapat diterapkan untuk petunjuk 6 dan 7:push 0x15
+pop rdx
.LOLCODE , I CAN HAZ 21 BYTES
Cukup tempatkan operator yang tidak valid di depan string. Anda dapat mencobanya di sini.
sumber
Pyth , 38/2
= 19 byte!36/2 = 18 byte!Uji secara online!
Penjelasan
Mencetak
Hello World!
, lalu mencoba mengevaluasiGoodbye Cruel World!
. Gagal melakukannya, karena string itu bukan kode yang valid.Hasilnya adalah:
sumber