Tôi là một người cố vấn tại RubyLearning và một trong những bài tập chúng tôi dành cho học sinh của mình là bài tập "Điếc bà" từ cuốn sách " Học cách lập trình " của Chris Pine . Đây là mô tả:
Viết một chương trình Bà Điếc. Bất cứ điều gì bạn nói với bà (bất cứ điều gì bạn nhập vào), cô ấy nên trả lời: "Hả?! Hãy lên tiếng, con trai!", Trừ khi bạn hét lên (gõ vào tất cả các chữ viết hoa). Nếu bạn hét lên, cô ấy có thể nghe thấy bạn (hoặc ít nhất là cô ấy nghĩ vậy) và hét lại: "Không, không kể từ năm 1938!"
Để làm cho chương trình của bạn thực sự đáng tin cậy, hãy để bà nội hét lên một năm khác nhau mỗi lần; có thể bất kỳ năm nào ngẫu nhiên trong khoảng thời gian từ 1930 đến 1950. (Phần này là tùy chọn và sẽ dễ dàng hơn nhiều nếu bạn đọc phần trên trình tạo số ngẫu nhiên của Ruby ở cuối chương phương pháp.) Bạn không thể ngừng nói chuyện với bà cho đến khi bạn hét lên "BYE".
Sau vài lần lặp lại khóa học, tôi đã cố gắng xem tôi có thể có được cái này nhỏ đến mức nào và bây giờ có tới 112 ký tự:
puts (s||='').upcase==s ? "NO, NOT SINCE #{1930+rand(21)}!":"HUH?! SPEAK UP, SONNY!" until(s=gets.chomp)=="BYE"
Tôi tò mò muốn xem làm thế nào ít nhân vật này có thể đạt được bằng ngôn ngữ bạn chọn, bởi vì tôi nghĩ Ruby đã làm rất tốt ở đây.
Chỉnh sửa: Giải pháp Perl được đăng dưới đây dẫn đến
ruby -nle 'puts($_=="BYE"?exit: $_.upcase!? "HUH?! SEPAK UP, SONNY!":"NO, NOT SINCE #{1930+rand(21)}!")'
đó là 92 ký tự cho biểu thức + 2 thêm cho các tùy chọn n
và l
.