Я наставник у RubyLearning, і однією з вправ, яку ми надаємо нашим студентам, є вправа "Глуха бабуся" з книги Кріса Пайна " Навчись програмувати ". Ось опис:
Напишіть програму глухих бабусь. Що б ви не сказали бабусі (що б ви не набрали), вона повинна відповісти: "Ага ?! Говоріть, синку!", Якщо ви не кричите це (введіть усі столиці). Якщо ви кричите, вона може почути вас (або, принаймні, вона так вважає) і кричить назад: "Ні, не з 1938 року!"
Щоб ваша програма була справді правдоподібною, попросіть бабусю кричати різний рік; можливо будь-який рік випадково між 1930 і 1950 роками. (Ця частина необов’язкова, і це було б набагато простіше, якби ви прочитали розділ про генератор випадкових чисел Рубі в кінці розділу про методи.) Ви не можете перестати спілкуватися з бабусею, поки не кричати "БАЙ".
Після декількох ітерацій курсу я спробував побачити, наскільки я маю змогу це отримати, і тепер зменшити його до 112 символів:
puts (s||='').upcase==s ? "NO, NOT SINCE #{1930+rand(21)}!":"HUH?! SPEAK UP, SONNY!" until(s=gets.chomp)=="BYE"
Мені цікаво побачити, як мало символів можна досягти мовою на ваш вибір, тому що я думаю, що Рубі вже тут справді добре.
Редагувати: Розміщене нижче рішення Perl призвело до
ruby -nle 'puts($_=="BYE"?exit: $_.upcase!? "HUH?! SEPAK UP, SONNY!":"NO, NOT SINCE #{1930+rand(21)}!")'
що становить 92 символи для виразу + 2 більше для параметрів nта та lпараметрів.

