Pada 1984, Michael Crichton menulis program keamanan di BASIC yang diterbitkan di majalah Creative Computing. Program akan meminta pengguna untuk mengetik frasa pilihannya, mencatat interval antara penekanan tombol, lalu memintanya mengetik ulang frasa. Jika waktunya berbeda terlalu banyak, program akan mengidentifikasi pengguna sebagai penipu.
Tugas Anda: buat versi program Crichton dalam bahasa pilihan Anda.
Aturan:
Frasa untuk berkomunikasi dengan pengguna ("Silakan ketikkan frasa kunci," "Silakan ketik frasa kunci lagi," dll.) Dihitung setiap satu byte, berapa pun panjang sebenarnya. Ini hanya untuk komunikasi pengguna, jangan mencoba menyembunyikan kode program di dalam string.
Tes lulus / gagal harus didasarkan pada nilai absolut rata-rata dari persentase persentase dari interval asli. Jika string tidak cocok, kembalikan gagal atau izinkan pengguna untuk mencoba lagi, atas kebijakan Anda.
Frasa kunci seharusnya tidak mengizinkan string nol. Jika frasa kunci terlalu panjang untuk tipe data string Anda, terpotong atau tidak diizinkan dan mulai lagi, sesuai kebijakan Anda.
Sensitivitas tes (ambang batas untuk lulus / gagal tes) harus disesuaikan dalam kode sumber.
Saya awalnya memberikan bonus 20% dari jumlah byte total jika kode sumber Anda dapat diformat agar menyerupai dinosaurus. Telah ditunjukkan bahwa ini sangat subjektif dan mungkin lebih tepat untuk kontes popularitas, jadi saya telah menghapus bonus ini. Namun saya masih dengan sungguh-sungguh mendorong pemformatan dinosaurus, dan jika Anda memformat kode Anda agar terlihat seperti dinosaurus, Anda dapat mengurangi komentar kosmetik murni, linebreak, atau karakter spasi putih dari total byte Anda.
Kemenangan byte terpendek, tergantung pada panjang string dan penyesuaian format dinosaurus.
Perhatikan bahwa spesifikasi saya di atas tidak sama persis dengan operasi kode Crichton, salinannya dapat ditemukan online. Ikuti spek, jangan coba mengkloning yang asli.
"Please type the key phrase"dihitung sebagai 1 byte, atau hanya frasa yang dihitung dan frasa yang dikutip dihitung sebagai 3 byte ( ", frasa, ")? Apakah disengaja bahwa interval yang lebih lama dan interval yang lebih pendek akan "membatalkan" dan menjadi lebih lagi? Apakah program harus memverifikasi bahwa kedua frasa kunci cocok?