我是RubyLearning的导师,我们为学生提供的练习之一是Chris Pine的书“ Learn to Program ”中的“聋奶奶”练习。描述如下:
编写聋人奶奶程序。无论您对奶奶说什么(无论您输入什么),她都应回答:“ Hu!如果您大喊,她会听到您的声音(或者至少她是这么认为的),然后大喊:“不,自1938年以来!”
为了使您的程序真正可信,每次让奶奶大喊一遍。可能是1930年至1950年之间的任意一年。(这部分是可选的,如果您在方法一章的末尾阅读Ruby的随机数生成器这一节,将会更加容易。)喊“再见”。
经过几次课程迭代后,我尝试查看我能得到多小,现在减少到112个字符:
puts (s||='').upcase==s ? "NO, NOT SINCE #{1930+rand(21)}!":"HUH?! SPEAK UP, SONNY!" until(s=gets.chomp)=="BYE"
我很想知道用您选择的语言可以实现几个字符,因为我认为Ruby在这里已经做得很好。
编辑:下面发布的Perl解决方案导致
ruby -nle 'puts($_=="BYE"?exit: $_.upcase!? "HUH?! SEPAK UP, SONNY!":"NO, NOT SINCE #{1930+rand(21)}!")'
表达式的长度为92个字符,而n
and l
选项的长度为2个字符。