आप समस्याएँ हल करने में निपुण हैं और सबसे कठिन गणितीय पहेलियाँ सुलझाने के लिए प्रसिद्ध हैं। एक शाम आपको Triangle Tinkerer नाम के एक आविष्कारक का एक ज़रूरी पत्र मिलता है, जो एक नए और अभूतपूर्व प्रोजेक्ट पर काम कर रहे हैं। पत्र में लिखा है:
प्रिय गणितज्ञ,
मुझे आपकी मदद चाहिए। मैं एक ऐसा उपकरण बना रहा हूँ जो पाइथागोरस त्रिक की अनोखी विशेषताओं पर निर्भर करता है, यानी तीन पूर्णांकों के ऐसे समूह जो समीकरण a² + b² = c² को संतुष्ट करते हैं। यह उपकरण नेविगेशन में क्रांति ला देगा, लेकिन इसके काम करने के लिए मुझे इसे हर ऐसे त्रिक से प्रोग्राम करना होगा जिसमें a, b और c का योग एक निश्चित संख्या N के बराबर हो। इन त्रिकों को हाथ से निकालने में मुझे सालों लग जाएँगे, लेकिन मैंने सुना है कि आप इस काम को आसानी से कर सकते हैं।
समय बहुत कम है। मेरे आविष्कार का भविष्य, और शायद गणितीय नवाचार का भविष्य भी, इस बात पर निर्भर करता है कि आप यह समस्या हल कर पाते हैं या नहीं।
इस काम के महत्व से प्रेरित होकर आप वे सारे पाइथागोरस त्रिक खोजने निकल पड़ते हैं जो इस शर्त को पूरा करते हैं। आपके इस काम का असर बहुत दूर तक पहुँच सकता है और यह विज्ञान और इंजीनियरिंग में नई संभावनाएँ खोल सकता है। क्या आप इस चुनौती का सामना करके इतिहास रच सकते हैं?
पाइथागोरस त्रिक तीन प्राकृतिक संख्याओं का एक समूह है, {a, b, c}, जिसके लिए
a² + b² = c²
होता है और जिसमें
a < b < c
भी होता है।
उदाहरण के लिए,
3² + 4² = 5².
इनपुट के रूप में एक पूर्णांक N दिया गया हो, तो वे सारे पाइथागोरस त्रिक खोजिए जिनके लिए a + b + c = N हो।
उदाहरण के लिए, N = 1000 लेने पर ठीक एक ऐसा पाइथागोरस त्रिक होता है जिसके लिए a + b + c = 1000 हो: {200, 375, 425}.
डिफॉल्ट रूप से triplets फंक्शन को सिर्फ sum दिया जाता है, लेकिन यह वैकल्पिक रूप से minFactor और/या maxFactor भी ले सकता है। जब ये दिए जाएँ, तो ध्यान रखिए कि त्रिक के हर गुणनखंड का मान कम से कम minFactor और अधिक से अधिक maxFactor हो।
अगर आप इसे CLI की मदद से हल कर रहे हैं, तो इसमें बड़ी संख्याओं वाला एक टेस्ट केस है जिसे फिलहाल छोड़ दिया गया है, ताकि हमारे टेस्ट रनर में टाइमआउट न हो।
आप चाहें तो .skip हटाकर इसे चालू कर सकते हैं, बस ध्यान रखिए कि इसे चलने में कुछ समय लग सकता है।
Exercism पर साइन अप कीजिए और JavaScript को 37 कॉन्सेप्ट159 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।