আপনি একজন দক্ষ সমস্যা-সমাধানকারী, সবচেয়ে কঠিন গাণিতিক ধাঁধাগুলো মোকাবিলার ক্ষমতার জন্য পরিচিত। এক সন্ধ্যায় আপনি একটি জরুরি চিঠি পান ট্রায়াঙ্গল টিংকারার নামের এক উদ্ভাবকের কাছ থেকে, যিনি একটি যুগান্তকারী নতুন প্রকল্পে কাজ করছেন। চিঠিতে লেখা আছে:
প্রিয় গণিতবিদ,
আমার আপনার সাহায্য দরকার। আমি এমন একটি যন্ত্র তৈরি করছি, যা পিথাগোরীয় ত্রয়ীর অনন্য ধর্মের ওপর নির্ভর করে। ত্রয়ী মানে তিনটি পূর্ণসংখ্যার এমন একটি সেট, যা 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টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।