저는 RubyLearning의 멘토이며 우리 학생들에게 제공하는 연습 중 하나는 Chris Pine의 저서 " Learn to Program " 의 "Deaf Grandma"연습입니다 . 설명은 다음과 같습니다.
귀머거리 할머니 프로그램을 작성하십시오. 당신이 할머니에게 무엇을 말하든, 무엇을 입력 하든지, 그녀는 "음?! 당신이 소리 치면, 그녀는 당신을들을 수 있고 (적어도 그녀는 그렇게 생각한다) "아니, 1938 년 이래!"
당신의 프로그램을 정말로 믿을 수있게하려면, 매번 할머니가 다른 소리를 지도록하십시오. 아마도 1930 년에서 1950 년 사이의 임의의 연도 일 수 있습니다. (이 부분은 선택 사항이며, 메소드 장 끝에있는 루비의 난수 생성기 섹션을 읽으면 훨씬 더 쉬울 것입니다.) "BYE"를 외치십시오.
몇 번의 과정을 반복 한 후이 크기를 얼마나 작아서 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 자, n
및 l
옵션의 경우 2 자입니다 .