Sekarang saatnya memamerkan kemampuan Anda untuk menulis kode yang buruk. Saya mencoba jenis baru teka-teki pemrograman, paling mirip, saya pikir, dengan kontes C curang. Perbedaan utama adalah bahwa ini hampir tidak jahat: itu hanya beberapa kesenangan bersih yang bagus. Tujuan dari teka-teki ini adalah untuk mengemas bug sebanyak mungkin ke dalam suatu program. Pemenang kontes ini adalah yang menulis program dengan bug paling banyak per karakter.
Untuk menghindari utas komentar yang meminta klarifikasi, sekarang saya harus mendefinisikan apa yang saya anggap sebagai bug yang memenuhi syarat.
Pertama, bug bukan kesalahan . Jika itu adalah masalah yang dapat dideteksi oleh penerjemah sebagai kesalahan (mis pembatas yang tidak cocok, sintaks yang terbentuk dengan buruk, mengakses properti dari objek nol, dll.) Atau jika itu mencegah program untuk mengeksekusi atau melanjutkan, itu bukan sebuah bug. Jika tidak, Anda bisa mengetikkan empat karakter dan penerjemah dapat membuat daftar delapan kesalahan sintaks dan Anda dapat mengklaim rasio bug-karakter 2.
Kedua, bug tidak boleh salah dan bug bukan telur paskah . Ini tentu saja merupakan kriteria subyektif, tetapi saya pikir penting untuk jenis kontes ini. Ini berarti Anda tidak dapat memiliki kode kondisional yang secara spesifik mengubah kode dengan cara yang jelas. (Baca: gunakan bahasa lubang turing, karena tidak ada yang akan tahu bedanya).
Ketiga, bug harus masuk akal . Ini subjektif, seperti yang di atas, tetapi bug tersebut harus terlihat seperti ditulis oleh orang yang kurang teliti atau mungkin tidak tahu, atau seseorang yang baru saja membuat kesalahan. Ini termasuk, misalnya, kesalahan satu per satu atau sintaks yang valid dan terlihat benar tetapi menyebabkan perilaku yang tidak diinginkan (misalnya, menggunakan tanda kurung siku alih-alih tanda kurung).
Bug dapat menyebabkan segala jenis perilaku yang tidak diinginkan pada program, termasuk, tetapi tentu saja tidak terbatas pada, output yang tidak diinginkan untuk beberapa kasus luar biasa, memiliki perilaku yang berbeda berdasarkan pada sesuatu yang tampaknya tidak terkait (mis. Tampilan menampilkan berbeda tergantung pada apakah waktu saat ini berakhir dengan jumlah ganjil atau genap detik), memori bocor, kehilangan data, dan sebagainya.
Contoh Masalah:
Buat program yang menampilkan semua karakter ASCII dengan urutan naik dari nilai numeriknya.
Contoh jawaban:
Brainf ***, 5 karakter, 1 bug, rasio bug-char 0,2
+[+.]
Bug: tidak menampilkan karakter ASCII untuk 1. Dapat diperbaiki dengan mengubah ke .+[.+]
.
Ok, saya pikir Anda seharusnya sudah mendapatkannya sekarang, inilah teka-teki Anda:
Decode Cipher Caesar dan Sortir Kata-kata Menurut Abjad
Sebuah cipher caesar dibuat dengan mengambil serangkaian huruf dan pergeseran mereka n huruf lebih dalam alfabet. Jika sampai ke awal atau akhir alfabet, A muncul setelah Z, dan Z muncul sebelum A. Misalnya:
Mannequin
Nboofrvjo //Shifted over 1 or -25
Wkxxoaesx //Shifted over 10 -16
Ftggxjnbg //Shifted over -7 or 19
Anda akan diberikan dua input (Anda bisa mendapatkan input namun yang paling nyaman bagi Anda, masuk akal). Input pertama adalah kata-kata, dan input kedua adalah nilai yang digeser. Tugas Anda adalah untuk mengeluarkan kata-kata yang diterjemahkan, dan kemudian mengeluarkan kata-kata yang sudah diterjemahkan itu setelah diurutkan secara alfabet.
Contoh (jangan tersinggung anak nakal, itu hanya contoh):
Input pertama: gtdx wjbfwiji. ljy Gfi hfssty
Input kedua: 5
Output pertama: anak laki-laki dihargai. menjadi buruk tidak bisa
Keluaran kedua: Anak laki-laki nakal tidak bisa mendapatkan hadiah.
Semoga berhasil!