मैं RubyLearning में एक संरक्षक हूं और हमारे छात्रों को दिए गए अभ्यासों में से एक क्रिस पाइन की पुस्तक " लर्न टू प्रोग्राम " से "बधिर दादी" अभ्यास है । यहाँ वर्णन है:
बहरा दादी कार्यक्रम लिखें। जब भी आप दादी से कहते हैं (आप जो भी टाइप करते हैं), तो उन्हें इस बात का जवाब देना चाहिए: "हुह? बोलो, बेटा!", जब तक कि आप इसे चिल्लाएंगे नहीं (सभी राजधानियों में टाइप करें)। यदि आप चिल्लाते हैं, तो वह आपको सुन सकती है (या कम से कम वह ऐसा सोचती है) और वापस चिल्लाती है: "नहीं, 1938 से नहीं!"
अपने कार्यक्रम को वास्तव में विश्वसनीय बनाने के लिए, हर बार दादी ने एक अलग साल चिल्लाया; 1930 और 1950 के बीच यादृच्छिक रूप से किसी भी वर्ष। (यह हिस्सा वैकल्पिक है, और अगर आप रूबी के यादृच्छिक संख्या जनरेटर पर अनुभाग अध्याय के अंत में अनुभाग पढ़ते हैं तो यह बहुत आसान होगा।) जब तक आप दादी से बात नहीं कर सकते। "BYE" चिल्लाएँ।
कई पाठ्यक्रम पुनरावृत्तियों के बाद मैंने यह देखने की कोशिश की कि मुझे यह कितना छोटा लग सकता है और अब यह 112 वर्णों तक नीचे है:
puts (s||='').upcase==s ? "NO, NOT SINCE #{1930+rand(21)}!":"HUH?! SPEAK UP, SONNY!" until(s=gets.chomp)=="BYE"
मैं यह देखने के लिए उत्सुक हूं कि आपकी पसंद की भाषा में इसे कितने वर्णों में प्राप्त किया जा सकता है, क्योंकि मुझे लगता है कि रूबी पहले से ही यहां बहुत अच्छा कर रही है।
संपादित करें: नीचे दिए गए पर्ल समाधान का नेतृत्व किया गया
ruby -nle 'puts($_=="BYE"?exit: $_.upcase!? "HUH?! SEPAK UP, SONNY!":"NO, NOT SINCE #{1930+rand(21)}!")'
जो कि अभिव्यक्ति के लिए 92 अक्षर है + n
और l
विकल्पों के लिए 2 और ।