पृष्ठभूमि:
मानक संचालन गणित जैसे मूल जोड़ और वास्तविक दुनिया में गुणा इन जैसे काम करते हैं:
12 + 123 = 135
तथा
12 * 123 = 1476
यह दिलचस्प और उबाऊ नहीं है! कई स्कूल पहले से ही औपचारिक एल्गोरिदम के अभ्यास, अभ्यास, अभ्यास के रूप में इसकी व्याख्या कर रहे हैं। यह एक बहुत ही कठोर और उबाऊ गणितीय आहार का अर्थ है और इस चुनौती में ऐसा नहीं है। हमारी प्यारी साइट पर कुछ मजेदार खेलने के लिए तैयार हो जाओ।
दो सकारात्मक पूर्णांक संख्याओं को जोड़ने की प्रक्रिया पर विचार करें, फिर इसके परिणाम के सभी अंकों को फिर से जोड़ दें। केवल एक अंक प्राप्त होने तक जोड़ के साथ दोहराते हुए। उदाहरण के लिए:
- का परिणाम
12 + 123
135 है। - 135 के सभी अंकों को जोड़कर हम प्राप्त करते हैं
1 + 3 + 5 = 9
।
इस बार-बार जोड़ में एकल अंक 9 प्राप्त करने के लिए आवश्यक चरणों की संख्या 2 है।
जोड़ की पिछली प्रक्रिया के समान, दो सकारात्मक पूर्णांक संख्याओं का गुणन एक ही प्रक्रिया का अनुसरण करता है। इसके परिणाम के सभी अंकों को गुणा करें और तब तक इस प्रक्रिया को दोहराएं जब तक कि केवल एक अंक न रह जाए। उपरोक्त उदाहरण लें:
12 * 123
1476 का परिणाम है।- 1476 के सभी अंकों को हम प्राप्त करते हैं
1 * 4 * 7 * 6 = 168
। - 168 के सभी अंकों को फिर से गुणा करें
1 * 6 * 8 = 48
। - 48 के सभी अंकों को फिर से गुणा करें
4 * 8 = 32
। - 32 के सभी अंकों को एक बार फिर से गुणा करें
3 * 2 = 6
।
एकल अंक 6 प्राप्त करने के लिए आवश्यक चरणों की संख्या यह दोहराया गुणन 5 है।
इस चुनौती के लिए और गणित के किसी भी दुरुपयोग से बचने के लिए, मैं इन दो डमी नोटेशनों को पेश करता हूं: (+)
और (*)
, लेकिन आप अपनी पसंद के किसी भी नोटेशन का उपयोग कर सकते हैं , जो अनुसरण की तरह काम करते हैं:
- एकल मान प्राप्त करने के लिए बार-बार जोड़ प्रक्रिया का संचालन है
12 (+) 123 = 9
। - एकल मान प्राप्त करने के लिए बार-बार गुणा प्रक्रिया का संचालन है
12 (*) 123 = 6
।
चुनौती:
चुनौती यह है कि या तो एक कार्यक्रम या एक फ़ंक्शन लिखा जाए जो पृष्ठभूमि अनुभाग में समझाया गया दोनों संचालन कर सकता है : (+)
और (*)
।
इनपुट:
कार्यक्रम या फ़ंक्शन के इनपुट दो सकारात्मक पूर्णांक हैं और एक ऑपरेशन (+)
और (*)
। इनपुट का प्रारूप प्रोग्रामर की एक मनमानी पसंद है । आप इनपुट, उदाहरण के लिए, फ़ॉर्मेट कर सकते हैं a (+) b
या F(a, (+), b)
या किसी भी प्रारूप आप चाहते हैं।
आउटपुट:
कार्यक्रम या फ़ंक्शन के आउटपुट में ऑपरेशन का परिणाम और वांछित चरणों के साथ फ्रीस्टाइल प्रारूप के साथ आवश्यक संख्या शामिल होनी चाहिए।
परीक्षण मामले (इनपुट और आउटपुट प्रारूप को अनदेखा करें):
81 (+) 31 --> (4 ; 2)
351 (+) 14568 --> (6 ; 3)
21 (*) 111 --> (8 ; 3)
136 (*) 2356 --> (0 ; 2)
सामान्य नियम:
- यह कोड-गोल्फ है , इसलिए बाइट्स में सबसे छोटा जवाब चुनौती जीतता है।
नियमित भाषाओं के साथ उत्तर पोस्ट करने से एस्कोलैंग्स को हतोत्साहित न करें। अपनी प्रोग्रामिंग लैंग्वेज के साथ यथासंभव उत्तर प्रदान करके इस चुनौती का आनंद लें। यदि आप एक चतुर उत्तर और स्पष्ट विवरण पोस्ट करते हैं, तो आपके द्वारा उपयोग की जाने वाली प्रोग्रामिंग भाषा की परवाह किए बिना आपके उत्तर की सराहना की जाएगी (इसलिए upvotes)। - मानक नियम आपके उत्तर के लिए लागू होते हैं , इसलिए आपको उचित पैरामीटर, पूर्ण कार्यक्रम आदि के साथ STDIN / STDOUT, फ़ंक्शन / विधि का उपयोग करने की अनुमति है। पसंद आपकी है।
- यदि संभव हो, तो आपका प्रोग्राम बड़ी संख्या में ठीक से संभाल सकता है। यदि नहीं, तो वह ठीक हो जाएगा।