Jestem mentorem w RubyLearning, a jednym z ćwiczeń, które wykonujemy dla naszych uczniów, jest ćwiczenie „Głucha babcia” z książki Chrisa Pine'a „ Naucz się programować ”. Oto opis:
Napisz program dla głuchoniemych babć. Cokolwiek powiesz babci (cokolwiek wpiszesz), powinna odpowiedzieć: „Hę ?! Mów, synku!”, Chyba że krzykniesz (wpisz wszystkie wielkie litery). Jeśli krzyczysz, słyszy cię (a przynajmniej tak jej się wydaje) i krzyczy: „Nie, nie od 1938 roku!”
Aby twój program był naprawdę wiarygodny, niech babcia za każdym razem krzyczy o innym roku; może w dowolnym roku losowo między 1930 a 1950. (Ta część jest opcjonalna i byłaby o wiele łatwiejsza, gdybyś przeczytał sekcję generatora liczb losowych Ruby na końcu rozdziału metod.) Nie możesz przestać rozmawiać z babcią, dopóki krzycz „BYE”.
Po kilku iteracjach kursu próbowałem zobaczyć, jak mały mogę to uzyskać, a teraz mam do 112 znaków:
puts (s||='').upcase==s ? "NO, NOT SINCE #{1930+rand(21)}!":"HUH?! SPEAK UP, SONNY!" until(s=gets.chomp)=="BYE"
Jestem ciekawy, jak mało znaków można to osiągnąć w wybranym przez ciebie języku, ponieważ myślę, że Ruby już tutaj ma się naprawdę dobrze.
Edycja: Rozwiązanie Perla opublikowane poniżej doprowadziło do
ruby -nle 'puts($_=="BYE"?exit: $_.upcase!? "HUH?! SEPAK UP, SONNY!":"NO, NOT SINCE #{1930+rand(21)}!")'
czyli 92 znaki dla wyrażenia + 2 więcej dla opcji ni l.

