Saya seorang mentor di RubyLearning dan salah satu latihan yang kami berikan kepada siswa kami adalah latihan "Tuna Rungu" dari buku Chris Pine, " Learn to Program ". Berikut uraiannya:
Tulis program Nenek Tuli. Apa pun yang Anda katakan kepada nenek (apa pun yang Anda ketikkan), ia harus menjawab dengan: "Hah ?! Bicaralah, Nak!", Kecuali Anda meneriakkannya (ketikkan semua huruf besar). Jika Anda berteriak, dia bisa mendengarmu (atau setidaknya menurutnya begitu) dan berteriak: "Tidak, tidak sejak 1938!"
Untuk membuat program Anda benar-benar dapat dipercaya, mintalah nenek berteriak tahun yang berbeda setiap kali; mungkin setiap tahun secara acak antara 1930 dan 1950. (Bagian ini opsional, dan akan jauh lebih mudah jika Anda membaca bagian tentang penghasil angka acak Ruby di akhir bab metode.) Anda tidak dapat berhenti berbicara dengan nenek sampai Anda teriak "BYE".
Setelah beberapa kali pengulangan, saya mencoba melihat seberapa kecil saya bisa mendapatkan ini dan sekarang memilikinya hingga 112 karakter:
puts (s||='').upcase==s ? "NO, NOT SINCE #{1930+rand(21)}!":"HUH?! SPEAK UP, SONNY!" until(s=gets.chomp)=="BYE"
Saya ingin tahu seberapa sedikit karakter ini dapat dicapai dalam bahasa pilihan Anda, karena saya pikir Ruby sudah melakukannya dengan sangat baik di sini.
Sunting: Solusi Perl yang diposting di bawah ini mengarah ke
ruby -nle 'puts($_=="BYE"?exit: $_.upcase!? "HUH?! SEPAK UP, SONNY!":"NO, NOT SINCE #{1930+rand(21)}!")'
yang merupakan 92 karakter untuk ekspresi + 2 lebih banyak untuk opsi n
dan l
.