Tugas Anda: Untuk menulis sebuah program yang jelas-jelas harus berakhir, tetapi tidak pernah (sejauh crash komputer) tidak. Buat itu terlihat seperti itu harus melakukan tugas sederhana: menambahkan angka, mencetak sesuatu, ... Tapi itu hanya terjebak dalam loop yang tak terbatas.
Cobalah untuk membuat program Anda sangat jelas dan sederhana, sementara itu sebenarnya akan terjebak dalam lingkaran yang tidak terduga. Pemilih: nilai jawaban tentang seberapa "curang" mereka!
Ini adalah kontes popularitas: Jadilah kreatif!
popularity-contest
underhanded
Nomor 9
sumber
sumber
Jawaban:
Javascript
sumber
raw_input
atau Python 3input
memunculkan aTypeError
.+
operator di sini adalah penggabungan string, bukan tambahan.C
Hanya contoh program dasar yang menggambarkan tiga jenis while-loop di C.
sumber
(x --> 0)
JavaScript
sumber
alert
setelah loop.a = 1
menjadia = true
. Kode masih akan memiliki infinite loop seperti itu, tetapi akan lebih jelas bahwa alasannya bukan beberapa kekhasan dalam konversi JavaScript dari ints ke booleans.C #
sumber
l
itu seharusnya terlihat seperti1
! Aku bodoh. : \C
Bagaimana dengan presisi?
sumber
HTML / JavaScript
Bayangkan Anda memiliki kotak input di halaman Anda:
Dan sekarang Anda ingin mengetikkan sesuatu di dalamnya ... Coba di Chrome: http://jsfiddle.net/jZp4X/ .
sumber
C ++
sumber
g++
tidak akan memperingatkan Anda tentang ini tanpa mereka.-Wall --pedantic
.-Wsign-compare
yang bisa dihidupkan-Wextra
.pesta
(Ada permintaan untuk tidak ada loop atau rekursi)
sumber
bash
memori dan menabraknyayes
hanya program coreutils. Bukan syscall.C
Huruf "x" hilang dalam file. Sebuah program ditulis untuk menemukannya:
Itu dikompilasi dan dijalankan dan akhirnya berteriak:
Selama bertahun-tahun surat telah diselamatkan dengan cara ini sampai orang baru datang dan mengoptimalkan kode. Dia akrab dengan tipe data dan tahu bahwa lebih baik menggunakan unsigned daripada menandatangani untuk nilai-nilai non-negatif karena memiliki rentang yang lebih luas dan memberikan perlindungan terhadap luapan. Jadi dia mengubah int menjadi unsigned int . Dia juga tahu ascii cukup baik untuk mengetahui bahwa mereka selalu memiliki nilai non-negatif. Jadi dia juga mengubah char menjadi char yang tidak ditandatangani . Dia menyusun kode dan pulang dengan bangga atas pekerjaan bagus yang dia lakukan. Programnya terlihat seperti ini:
Dia kembali ke malapetaka pada hari berikutnya. Huruf "a" hilang dan meskipun seharusnya berada di "desert_file" yang berisi "abc", program tersebut mencarinya selamanya hanya untuk mencetak:
Mereka memecat orang itu dan kembali ke versi sebelumnya mengingat bahwa orang tidak boleh mengoptimalkan tipe data dalam kode kerja.
Tapi pelajaran apa yang seharusnya mereka pelajari di sini?
PS. Program dibangun di sekitar bug yang disebutkan dalam Bahasa Majelis PC oleh Paul A. Carter
sumber
Regex
Dengan input yang tepat, regex berikut ini dapat menyebabkan mesin regex backtracking masuk ke neraka backtracking:
Input sederhana seperti
"Programming Puzzles and Code Golf Stack Exchange - Mozilla Firefox"
atau"AVerySimpleInputWhichContainsAnInsignificantSentence."
(kedua string dikutip untuk kejelasan) sudah cukup untuk membuat mesin regex yang paling mundur berjalan untuk waktu yang lama.sumber
JavaScript
sumber
Haskell
Nah, pikirkan itu! Itu akan sama dengan
head $ "Hello" ++ (repeat '!')
, yaitu hanya harus kembali'H'
.sumber
Java di bawah Windows
sumber
Untuk membandingkan apel dan jeruk ... di C
Saya terkesan bahwa tidak ada kode di sini menggunakan
goto
... (Anda tahu: Goto itu jahat! )Tidur hanya untuk bisa membacanya. Tekan ^ C jika Anda tidak memiliki banyak waktu untuk menunggu sesuatu yang tidak pernah terjadi ;-)
sumber
C, dengan kompiler pengoptimal tertentu
Program ini menambah variabel integer hingga melimpah.
sumber
int32_t
; int 64 bit akan memakan waktu sangat lama, sangat, sangat lama (585 tahun jika setiap iterasi membutuhkan satu nanosecond).C ++
Gaya berkomentar yang aneh adalah triknya. Petunjuk: trigraph.
sumber
Jawa
Saya khususnya menyukai efek samping optimasi autoboxing ini:
sumber
= new Integer(0)
, karena Anda menginisialisasi nilai setelahnya. (Ini mungkin membuat alasannya kurang jelas.)Ruby / C
Ini bekerja dengan benar dalam C , menghitung mundur dari 9 ke 1 dalam STDOUT. Ketika dijalankan di Ruby, itu tidak berakhir, karena
sumber
JavaScript
sumber
C
Ini harus mencetak tabel kode untuk semua karakter ASCII, dari 0 hingga 255. A
char
cukup besar untuk diulanginya.sumber
printf("%3d %2x: %c", i, i, i);
(untuk tabel kode) di loop Anda.Python
sumber
exit
sebenarnya? Tampaknya menjadi kelas, tetapi untuk apa ini digunakan? Anda juga bisa mengubahprint m
keprint(m)
sehingga ini juga bekerja dengan Python 3.@moose
pernyataan cetak yang diperbarui dan pesan spoilerC ++
Bagaimana dengan C ++ klasik - jebakan programmer?
sumber
keepGoing = true
dimaksudkan untuk membandingkan nilaikeepGoing
, alih-alih memberikan nilaikeepGoing
; selain itu seluruh pernyataankeepGoing = true
dievaluasi menjaditrue
(yang memungkinkan Anda untuk menulis hal-hal sepertia=b=c=d=0
) yang mengarah ke loop tak terbatas.== true
(atau Yoda-styletrue ==
) mubazir, dan kondisinya harus dibacawhile (keepGoing)
.Javascript
sumber
var a;var points = 0;function fiftyfifty() {points++;if (Math.random() > 0.5)return true;}; á = fiftyfifty(); while (a === undefined) {á = fiftyfifty();} console.log("Points: " + points);
Saya akan menyerah, hapus ini selamanya, bersihkan komputer saya, mungkin pemindai virus hanya untuk memastikan dan menulis ulang sepenuhnya. EDIT: Karenavar a = 0; a = 1;
tidak terlalu realistisJawa:
sumber
C ++
Sedikit acak?
sumber
Haskell
Beberapa kode waktu menghitung nilai yang diberikan dari fungsi Ackermann. Untuk nilai yang sangat rendah biasanya berakhir. Pada komputer saya nilai yang sangat rendah berarti sekitar 3 5 atau lebih kecil dengan kode yang dikompilasi dan
-O
. Dalam ghci nilai rendah berarti sekitar 3 3.The
'
simbol tampaknya mengacaukan sintaks, tidak yakin mengapa. Di beberapa tempat mereka dibutuhkan sehingga tidak dapat menghapus semuanya.Edit- bahasa yang diubah.
sumber
Java - Tidak ada loop atau rekursi
Saya baru mulai belajar ekspresi reguler dan menulis program pertama saya untuk menguji apakah string saya cocok dengan ekspresi reguler.
Sayangnya, program ini tidak membuahkan hasil. Itu memegang terminal. Tolong bantu dalam menemukan masalah. Saya belum menggunakan loop, tidak ada rekursi yang terlibat. Saya benar-benar bingung.
Apa yang telah saya lakukan salah? Mengapa program saya tidak berakhir? Tolong bantu!
Tautan ideone di sini .
sumber
C
Anda seharusnya hanya membutuhkan satu dari dua loop, tetapi yang mana yang Anda butuhkan tergantung pada kompiler Anda.
sumber
C / C ++
C ++ hanya memungkinkan deklarasi variabel inline mudah yang digunakan di sini, tetapi sama mudahnya untuk membuat kesalahan ini di C ...
sumber
C #
Berikut ini adalah kelas sederhana yang melakukan operasi aritmatika (penjumlahan) pada array input besar menggunakan utas latar belakang. Program sampel disertakan.
Namun, meskipun cukup mudah, itu tidak pernah berakhir. Perhatikan bahwa tidak ada sulap (karakter lookalikes, tersembunyi / hilang titik koma, trigraph ;-), dll.)
sumber