Ich bin ein Mentor bei RubyLearning und eine der Übungen, die wir unseren Schülern geben, ist die "Deaf Grandma" -Übung aus Chris Pines Buch " Learn to Program ". Hier ist die Beschreibung:
Schreiben Sie ein Programm für gehörlose Großmütter. Was auch immer Sie zu Oma sagen (was auch immer Sie eingeben), sie sollte antworten mit: "Huh ?! Sprechen Sie, Junge!", Es sei denn, Sie rufen es (geben Sie alle Großbuchstaben ein). Wenn Sie schreien, kann sie Sie hören (oder glaubt es zumindest) und schreit zurück: "Nein, nicht seit 1938!"
Lassen Sie die Oma jedes Mal ein anderes Jahr rufen, damit Ihr Programm wirklich glaubwürdig wird. Vielleicht jedes beliebige Jahr zwischen 1930 und 1950. (Dieser Teil ist optional und wäre viel einfacher, wenn Sie den Abschnitt über Rubys Zufallszahlengenerator am Ende des Kapitels über Methoden lesen.) Sie können nicht aufhören, mit Oma zu sprechen, bis Sie Ruf "Tschüss".
Nach mehreren Kursiterationen habe ich versucht zu sehen, wie klein ich das bekommen kann und habe es jetzt auf 112 Zeichen reduziert:
puts (s||='').upcase==s ? "NO, NOT SINCE #{1930+rand(21)}!":"HUH?! SPEAK UP, SONNY!" until(s=gets.chomp)=="BYE"
Ich bin gespannt, in wie wenigen Zeichen dies in der Sprache Ihrer Wahl erreicht werden kann, da Ruby hier meiner Meinung nach bereits sehr gut abschneidet.
Bearbeiten: Die unten veröffentlichte Perl-Lösung führte zu
ruby -nle 'puts($_=="BYE"?exit: $_.upcase!? "HUH?! SEPAK UP, SONNY!":"NO, NOT SINCE #{1930+rand(21)}!")'
Das sind 92 Zeichen für den Ausdruck + 2 weitere Zeichen für die Optionen nund l.

