Tugas Anda adalah membangun program terbesar yang dapat Anda gunakan yang menggunakan tepat satu GOTO, yang tanpanya seluruh program (atau setidaknya sebagian besar darinya) harus sepenuhnya direstrukturisasi. Skor dihitung sebagai jumlah pernyataan dalam kode Anda yang mengubah tempat atau baru diperkenalkan (menghapus pernyataan tidak menambah skor Anda) ketika kode direstrukturisasi tanpa GOTO (orang lain diizinkan untuk menantang restrukturisasi Anda dengan menyajikan lebih banyak yang elegan). Karena ini adalah bowling kode, skor tertinggi menang.
Catatan: Saya tidak mengklaim tanggung jawab atas serangan velociraptor dengan mencoba tantangan ini.
code-bowling
Joe Z.
sumber
sumber
goto
denganswitch
tampaknya mungkin untuk keduanya.Jawaban:
C fizzbuzz
Solusi ini berjalan di sekitar gagasan interupsi dan label variabel (hanya gcc, maaf). Program ini mengatur timer yang secara berkala memanggil utama, di mana kita pergi ke mana saja yang melakukan eksekusi terakhir dari interrupt handler (utama) kita kepada kita.
Saya belum pernah menggunakan timer atau label variabel sebelumnya, jadi saya pikir ada banyak hal yang perlu diperhatikan di sini.
sumber
run
harus dinyatakanvolatile
, jika tidakwhile(run)
dapat "dioptimalkan" untukwhile(1)
. Atau sebagai gantinya, hanya kebagian tempat yang memanggilexit
.volatile int num
luar main harus dilakukan. Denganstatic
, gcc berpikir itu tahu siapa yang bisa mengacaukannya.Perl
Saya tidak pandai bowling, tapi saya curiga ini mungkin menarik bagi OP. Ini adalah Saringan Eratosthenes menggunakan goto variabel. Kalau ini 'refactored', saya ragu semua itu akan dapat digunakan kembali, selain mungkin beberapa baris pertama. Ketika saringan berakhir, semua yang tersisa
1
dalam@primes
array sesuai dengan nilai-nilai prima.Untuk tambahan kesenangan, tidak ada ands, ors, ternary, conditional atau operator pembanding apa pun yang digunakan.
sumber
C
Penggunaan makro saya mungkin tidak menjadikannya "satu GOTO".
Dan itu cukup singkat, jadi "sepenuhnya direstrukturisasi" tidak banyak.
Tapi ini usahaku.
Membaca angka dari input standar, mencetaknya modulu 3.
sumber
printf
danscanf
. Skor solusi Anda kemungkinan besar sekitar 2 atau 3.n%3
dengan cara itu. Itu harus menjadi program yang berbelit-belit ketika GOTO dihapus , bukan ketika diperkenalkan .goto
, program tidak akan berfungsi. Tapi apa yang Anda harapkan - bahwa program ini akan menjadi berbelit-belit hanya karena dihapus saja?