Untuk memperingati peluncuran publik Stack Overflow, apa kode terpendek yang menyebabkan stack overflow? Selamat datang dalam bahasa apa pun.
ETA: Hanya untuk memperjelas pertanyaan ini, mengingat saya pengguna Skema sesekali: "rekursi" panggilan ekor benar-benar iterasi, dan solusi apa pun yang dapat dikonversi ke solusi berulang relatif sepele oleh kompiler yang layak tidak akan Dihitung. :-P
ETA2: Saya sekarang telah memilih "jawaban terbaik"; lihat posting ini untuk alasan. Terima kasih untuk semua orang yang berkontribusi! :-)
sumber
"
Ini memuat 79 salinan dari nomor 32 setiap dua kali ia membungkus, daripada 2 salinan dari nomor 1.Baca baris ini, dan lakukan apa yang dikatakannya dua kali .
sumber
Anda juga dapat mencoba ini di C # .net
sumber
Nemerle :
Ini membuat crash kompiler dengan StackOverflowException:
sumber
Terbaik saya saat ini (dalam perakitan x86) adalah:
yang menghasilkan 3 byte kode objek (
50 EB FD
). Untuk kode 16-bit, ini juga memungkinkan:yang juga menghasilkan 3 byte (
E8 FD FF
).sumber
PIC18
The jawaban PIC18 diberikan oleh TK hasil dalam petunjuk berikut (biner):
Namun, CALL saja akan melakukan stack overflow:
PIC18 lebih kecil, lebih cepat
Tetapi RCALL (panggilan relatif) masih lebih kecil (bukan memori global, jadi tidak perlu tambahan 2 byte):
Jadi yang terkecil pada PIC18 adalah instruksi tunggal, 16 bit (dua byte). Ini akan membutuhkan 2 siklus instruksi per loop. Pada 4 siklus clock per siklus instruksi Anda punya 8 siklus clock. PIC18 memiliki tumpukan level 31, jadi setelah loop ke-32 ia akan meluap tumpukan, dalam 256 siklus clock. Pada 64MHz, Anda akan meluap tumpukan dalam 4 detik mikro dan 2 byte .
PIC16F5x (bahkan lebih kecil dan lebih cepat)
Namun, seri PIC16F5x menggunakan instruksi 12 bit:
Sekali lagi, dua siklus instruksi per loop, 4 jam per instruksi jadi 8 siklus clock per loop.
Namun, PIC16F5x memiliki tumpukan dua level, sehingga pada loop ketiga akan meluap, dalam 24 instruksi. Pada 20MHz, itu akan meluap dalam 1,2 detik mikro dan 1,5 byte .
Intel 4004
The Intel 4004 memiliki 8 bit panggilan subroutine instruksi:
Untuk penasaran yang sesuai dengan ascii 'P'. Dengan tumpukan 3 level yang membutuhkan 24 siklus clock untuk total 32,4 detik mikro dan satu byte . (Kecuali jika Anda overclock 4004 Anda - ayolah, Anda tahu Anda ingin.)
Yang sekecil jawaban befunge, tapi jauh lebih cepat daripada kode befunge yang berjalan pada interpreter saat ini.
sumber
C #:
sumber
Hoot overflow!
sumber
Setiap tugas membutuhkan alat yang tepat. Memenuhi bahasa SO Overflow , dioptimalkan untuk menghasilkan stack overflow:
sumber
TeX:
Hasil dalam:
Getah:
Hasil dalam:
sumber
~
aktif, dapat digunakan di tempat\a
. Dan saya menemukan kode LaTeX secara tidak sengaja. :)Assembler Z-80 - di lokasi memori 0x0000:
satu byte - 0xC7 - loop tanpa akhir untuk mendorong PC saat ini ke stack dan melompat ke alamat 0x0000.
sumber
Dalam Bahasa Inggris:
sumber
Contoh PHP lain:
sumber
Bagaimana dengan yang berikut di BASIC:
(Saya tidak punya penerjemah DASAR yang saya takutkan jadi itu dugaan).
sumber
GOSUB
, bukanGOTO
. KarenaRETURN
dari mana ia dipanggil, pasti itu menggunakan tumpukan?Saya menyukai tumpukan jawaban Cody, jadi inilah kontribusi saya yang serupa, di C ++:
Bukan entri kode golf dengan cara apa pun, tapi tetap saja, apa pun untuk tumpukan meta yang melimpah! :-P
sumber
Inilah kontribusi C saya, dengan bobot 18 karakter:
Ini jauh lebih sulit untuk mengoptimalkan panggilan! :-P
sumber
Menggunakan file batch Window bernama "s.bat":
sumber
Javascript
Untuk memangkas beberapa karakter, dan untuk mengeluarkan diri dari lebih banyak toko perangkat lunak, mari kita ikuti:
sumber
Asyik:
$ groovy stack.groovy:
sumber
Tolong beritahu saya apa singkatan " GNU ".
sumber
Inilah harapan agar tidak ada rekursi ekor!
sumber
C - Ini bukan yang terpendek, tetapi bebas rekursi. Ini juga tidak portabel: crash di Solaris, tetapi beberapa alokasi alokasi () mungkin mengembalikan kesalahan di sini (atau panggil malloc ()). Panggilan ke printf () diperlukan.
sumber
perl dalam 12 karakter:
bash dalam 10 karakter (ruang dalam fungsi itu penting):
sumber
coba dan taruh lebih dari 4 roti di satu burger. stack overflow.
sumber
Python :
Kalau tidak:
Dan jika Python dioptimalkan panggilan ekor ...:
sumber
Saya memilih "jawaban terbaik" setelah posting ini. Tetapi pertama-tama, saya ingin mengakui beberapa kontribusi yang sangat orisinal:
Seperti halnya saya menyukai hal di atas, tantangannya adalah tentang melakukan golf kode, dan untuk bersikap adil kepada responden, saya harus memberikan "jawaban terbaik" untuk kode terpendek, yaitu entri Befunge; Saya tidak percaya ada orang yang bisa mengalahkan itu (walaupun Konrad sudah mencoba), jadi selamat Patrick!
Melihat sejumlah besar solusi stack-overflow-by-recursion, saya terkejut bahwa tidak ada yang (pada tulisan saat ini) mengangkat kombinator Y (lihat esai Dick Gabriel, The Why of Y , untuk primer). Saya punya solusi rekursif yang menggunakan kombinator Y, serta pendekatan aku (f (x)). :-)
sumber
Berikut ini satu lagi yang menarik dari Skema:
sumber
Jawa
Versi solusi Java yang sedikit lebih pendek.
sumber
sumber
3 byte:
Memperbarui
Menurut dokumentasi (lama?) Intel (?) , Ini juga 3 byte:
sumber