ট্র্যাক
/
Python
Python
/
অনুশীলনী
/
সর্ববৃহৎ সিরিজ গুণফল
সর্ববৃহৎ সিরিজ গুণফল

সর্ববৃহৎ সিরিজ গুণফল

মধ্যম

ভূমিকা

আপনি একটি সরকারি সংস্থার হয়ে কাজ করেন, যে সংস্থা একদল ব্যাংক ডাকাতের এনক্রিপ্টেড যোগাযোগ সংকেতের একটি ধারা আটক করেছে। সংকেতগুলোর মধ্যে রয়েছে অঙ্কের একটি দীর্ঘ ধারা। আপনার দলকে বিভিন্ন ডিজিটাল সিগন্যাল প্রসেসিং কৌশল ব্যবহার করে সংকেতগুলো বিশ্লেষণ করতে হবে এবং এমন কোনো প্যাটার্ন খুঁজে বের করতে হবে, যা কোনো ডাকাতির পরিকল্পনার ইঙ্গিত দিতে পারে।

নির্দেশনা

আপনার কাজ হলো এনক্রিপ্টেড সিগন্যালে থাকা ডিজিটের দীর্ঘ ক্রমের মধ্যে প্যাটার্ন খোঁজা।

এখানে যে কৌশলটি ব্যবহার করবেন তার নাম হলো সবচেয়ে বড় সিরিজ গুণফল।

প্রথমে কয়েকটি পরিভাষা সংজ্ঞায়িত করি।

  • ইনপুট: যে ডিজিটের ক্রমটি আপনাকে বিশ্লেষণ করতে হবে
  • সিরিজ: ইনপুটের মধ্যে থাকা পাশাপাশি ডিজিটের একটি ক্রম
  • স্প্যান: প্রতিটি সিরিজ কত ডিজিটের
  • গুণফল: একাধিক সংখ্যা একসঙ্গে গুণ করলে যা পাওয়া যায়

চলুন "63915" ইনপুট দিয়ে একটি উদাহরণ দেখি।

  • একটি সিরিজ তৈরি করতে মূল ইনপুট থেকে পাশাপাশি ডিজিট নিন।
  • আপনি যদি 3 স্প্যান নিয়ে কাজ করেন, তাহলে তিনটি সম্ভাব্য সিরিজ থাকবে:
    • "639"
    • "391"
    • "915"
  • এরপর প্রতিটি সিরিজের গুণফল বের করতে হবে:
    • "639" সিরিজের গুণফল 162 (6 × 3 × 9 = 162)
    • "391" সিরিজের গুণফল 27 (3 × 9 × 1 = 27)
    • "915" সিরিজের গুণফল 45 (9 × 1 × 5 = 45)
  • 162, 27 এবং 45 উভয়ের চেয়েই বড়, তাই "63915"-এর সবচেয়ে বড় সিরিজ গুণফলটি "639" সিরিজ থেকে পাওয়া যায়। তাহলে উত্তরটি 162।

এক্সেপশন মেসেজ

কখনও কখনও এক্সেপশন রেইজ করা প্রয়োজন হয়। এটা করলে সবসময় একটি অর্থবহ এরর মেসেজ দেওয়া উচিত, যাতে বোঝা যায় এররের উৎসটি কী। এতে আপনার কোড আরও পাঠযোগ্য হয় এবং ডিবাগিংয়ে অনেক সাহায্য করে। যেসব ক্ষেত্রে আপনি জানেন এররের উৎসটি নির্দিষ্ট কোনো টাইপ হবে, সেখানে আপনি বিল্ট-ইন এরর টাইপগুলোর একটি রেইজ করা বেছে নিতে পারেন, তবে তবুও একটি অর্থবহ মেসেজ দিতে হবে।

এই নির্দিষ্ট অনুশীলনীতে যখন আপনার largest_product() ফাংশন অবৈধ ইনপুট পায়, তখন raise স্টেটমেন্ট ব্যবহার করে একটি ValueError "থ্রো" করা আবশ্যক। টেস্ট পাস হবে কেবল তখনই, যখন আপনি raise করবেন ওই exception এবং তার সাথে একটি মেসেজও দেবেন। series অনুশীলনীর কোড আপনি নির্দ্বিধায় আবার ব্যবহার করতে পারেন!

মেসেজসহ একটি ValueError রেইজ করতে, মেসেজটি exception টাইপের আর্গুমেন্ট হিসেবে লিখুন:

# span of numbers is longer than number series
raise ValueError("span must not exceed string length")

# span of number is negative
raise ValueError("span must not be negative")

# series includes non-number input
raise ValueError("digits input must only contain digits")
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Python Exercism

সর্ববৃহৎ সিরিজ গুণফল শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Python ট্র্যাকের 17টি কনসেপ্ট146টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।