Saya sedang mengerjakan golf untuk Java dan saya membutuhkan loop tak terbatas. Jelas, saya tidak ingin menghabiskan lebih banyak byte daripada yang harus saya lakukan, terutama dalam bahasa yang begitu ekspresif.
Dengan asumsi saya memiliki beberapa kode yang ingin saya jalankan, jelas garis dasarnya ditetapkan pada while(1>0)/*stmt*/
atau 10 karakter tambahan untuk satu baris dan while(1>0){/*stmt1*//*stmt2*/}
atau 12 karakter tambahan untuk beberapa baris. Saya katakan tambahan karena kode yang ingin saya loop selamanya (well, forever-ish ... Saya mungkin atau mungkin tidak ingin keluar atau kembali dari loop) akan memiliki panjang tertentu, dan kemudian saya harus menempel pada karakter tambahan untuk membuatnya benar-benar loop.
Pada awalnya saya pikir ini yang terbaik yang saya dapatkan, tetapi saya pikir saya akan memberikannya kepada para ahli untuk melihat apakah mereka dapat menemukan yang lebih baik.
main();
?main(null)
.main(a)
jikamain
dinyatakan sebagaipublic static void main(String[]a)
.Jawaban:
Ini berfungsi karena tidak ada kondisi yang dinilai selalu benar. Masukkan kode antara kawat gigi.
Jika Anda hanya mendapatkan beberapa pernyataan, Anda dapat menempatkannya di dalam bagian kepala (bagian (;;). Bahwa loop masih berjalan disebabkan oleh ketika pernyataan kondisi bukan boolean itu dianggap sebagai selalu benar. Terima kasih kepada @Ypnypn untuk peringatan
sumber
for(;;foo(),bar(),baz())quux();
for(;;);
Java - 60 byte (kode lengkap)
Saya mungkin tidak menafsirkan pertanyaan dengan benar, tetapi kode ini ketika dikompilasi dan dijalankan menghasilkan loop infinite-ish, dalam hal itu secara teknis ia harus berjalan selamanya, tetapi biasanya itu akan menghabiskan memori stack.
Di Coding Ground, ini berakhir cukup cepat, pada laptop Windows 7 saya dengan manajemen memori virtual canggih, ini berjalan lama, hanya membuat sistem lebih lambat dan lebih lambat.
sumber