पहेली
हाई स्कूल में रहते हुए मैंने जो थोड़ी पहेली सुनी वह कुछ इस तरह थी ...
- प्रश्नकर्ता मुझे एक नंबर देने के लिए कहेगा;
- संख्या को सुनने पर, प्रश्नकर्ता बार-बार उस पर किसी प्रकार का परिवर्तन करेगा (उदाहरण के लिए, वह कह सकता है कि दस तीन हैं ) जब तक कि वह संख्या 4 पर नहीं पहुंच जाता (अंत में वह चार के साथ समाप्त होगा जादू है )।
- कोई भी संख्या अंततः चार में बदलने योग्य लगती है, फिर चाहे वह कोई भी हो।
लक्ष्य परिवर्तन फ़ंक्शन का पता लगाने की कोशिश करना था और फिर इस पहेली को मज़बूती से अपने आप को आगे बढ़ाने में सक्षम होना चाहिए।
समाधान
किसी भी चरण में परिवर्तन समारोह था
- प्रश्न में संख्या लें,
- अपने अंग्रेजी शब्द प्रतिनिधित्व में अक्षरों की संख्या की गणना करें, एक हाइफ़न या रिक्त स्थान या "और" जैसे "दस" में 3 अक्षर हैं, "तीस-चालीस" में 10 अक्षर हैं, "एक सौ सैंतालीस" इसमें 20 अक्षर हैं)।
- उस पत्र की संख्या लौटाओ।
उन सभी नंबरों के लिए जिनकी मैंने कभी जांच की है, यह 4 में परिवर्तित होता है। चूंकि "चार" में भी चार अक्षर हैं, इसलिए यहां एक अनंत लूप होगा; इसके बजाय यह केवल अनुक्रम को समाप्त करने के लिए सम्मेलन द्वारा जादू के रूप में संदर्भित किया जाता है ।
चुनौती
आपकी चुनौती कोड का एक टुकड़ा बनाना है जो उपयोगकर्ता से एक नंबर पढ़ेगा और फिर "चार जादू है" तक परिवर्तन फ़ंक्शन को बार-बार लागू किए जाने वाले प्रिंट लाइनों को दिखाएगा।
विशेष रूप से:
- समाधान में और स्वयं के पूरे कार्यक्रम होने चाहिए। वे केवल ऐसे कार्य नहीं कर सकते हैं जो इनपुट में एक संख्या कारक में लेते हैं।
- इनपुट को मानक इनपुट से पढ़ा जाना चाहिए। ("इको" से पाइप करना या इनपुट पुनर्निर्देशन का उपयोग करना ठीक है क्योंकि यह स्टड से भी जाता है)
- इनपुट संख्यात्मक रूप में होना चाहिए।
- परिवर्तन फ़ंक्शन के प्रत्येक अनुप्रयोग के लिए, एक पंक्ति मुद्रित की जानी चाहिए:
a is b.
जहां a और b परिवर्तन में संख्याओं के संख्यात्मक रूप हैं। - पूर्ण विराम (अवधियों) की आवश्यकता है!
- अंतिम पंक्ति स्वाभाविक रूप से, कहना चाहिए
4 is magic.
। - कोड को 0 से 99 तक सभी नंबरों के लिए सही आउटपुट का उत्पादन करना चाहिए ।
उदाहरण:
> 4
4 is magic.
> 12
12 is 6.
6 is 3.
3 is 5.
5 is 4.
4 is magic.
> 42
42 is 8.
8 is 5.
5 is 4.
4 is magic.
> 0
0 is 4.
4 is magic.
> 99
99 is 10.
10 is 3.
3 is 5.
5 is 4.
4 is magic.
विजेता स्रोत कोड वर्ण गणना द्वारा सबसे छोटा सबमिशन है जो सही भी है ।
बक्शीश
आप उस कोड का एक संस्करण भी लिखने का प्रयास कर सकते हैं जो परिवर्तन फ़ंक्शन के प्रत्येक अनुप्रयोग के साथ संख्याओं के लिए अंग्रेजी नामों को प्रिंट करता है। मूल इनपुट अभी भी संख्यात्मक है, लेकिन आउटपुट लाइनों में संख्या का शब्द रूप होना चाहिए।
(अपने कोड के साथ आकृतियों के लिए डबल बोनस)
(EDIT) कुछ स्पष्टीकरण:
- मैं चाहता हूं कि यह शब्द सभी लागू मामलों में दोनों तरफ दिखाई दे, जैसे
Nine is four. Four is magic.
- मैं पूंजीकरण के बारे में परवाह नहीं करता, हालांकि। और मुझे परवाह नहीं है कि आप टोकन शब्द को कैसे अलग करते हैं, हालांकि उन्हें अलग किया जाना चाहिए:
ninety-nine
ठीक है,ninety nine
ठीक है,ninetynine
ठीक नहीं है।
मैं चुनौती के संबंध में बोनस प्रतियोगिता के लिए एक अलग श्रेणी पर विचार कर रहा हूं, इसलिए यदि आप इसके लिए जाते हैं, तो अपने कोड के संख्यात्मक संस्करण की तुलना में अधिक लंबे समय तक चिंता न करें।
प्रत्येक संस्करण के लिए एक समाधान प्रस्तुत करने के लिए स्वतंत्र महसूस करें।