ট্র্যাক
/
Haskell
Haskell
/
অনুশীলনী
/
প্যাসকেলের ত্রিভুজ
প্যাসকেলের ত্রিভুজ

প্যাসকেলের ত্রিভুজ

মধ্যম

ভূমিকা

আবহাওয়াটা দারুণ, তাই এক ঘণ্টা ক্লাসরুমে কাটাতে হবে ভেবে আপনার ভালো লাগছে না। বিরক্ত হয়ে আপনি ক্লাসরুমে ঢোকেন, আর সেখানে ব্ল্যাকবোর্ডে চোখে পড়ে অদ্ভুতভাবে মনোরম একটি ত্রিভুজের আকৃতি। আপনার গণিতের শিক্ষক আসার জন্য অপেক্ষা করতে করতে আপনি ত্রিভুজটির মধ্যে কিছু প্যাটার্ন লক্ষ্য না করে থাকতে পারেন না: বাইরের মানগুলো সবই এক, প্রতিটি পরের সারিতে আগের সারির চেয়ে একটি মান বেশি থাকে, আর ত্রিভুজটি প্রতিসম। অদ্ভুত!

আপনি বসার অল্পক্ষণ পরেই আপনার শিক্ষক ঘরে ঢোকেন এবং ব্যাখ্যা করেন যে এই ত্রিভুজটিই বিখ্যাত প্যাসকেলের ত্রিভুজ।

পরের এক ঘণ্টায় আপনার শিক্ষক এই ত্রিভুজের ভেতরে লুকিয়ে থাকা কিছু আশ্চর্য বিষয় তুলে ধরেন:

  • N-টি মান থেকে K-টি এলিমেন্ট কতভাবে বাছাই করা যায়, তা গণনা করতে এটি ব্যবহার করা যায়।
  • এতে ফিবোনাচি ধারা আছে।
  • জোড় ও বিজোড় সংখ্যাকে আলাদা আলাদা রঙে রং করলে আপনি সিয়েরপিনস্কি ত্রিভুজ নামে একটি সুন্দর প্যাটার্ন পাবেন।

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

নির্দেশনা

আপনার কাজ হলো প্যাসকেলের ত্রিভুজের প্রথম N সারি আউটপুট করা।

প্যাসকেলের ত্রিভুজ হলো ধনাত্মক ইন্টিজারের একটি ত্রিভুজাকার অ্যারে।

প্যাসকেলের ত্রিভুজে একটি সারিতে থাকা মানের সংখ্যা তার সারি নম্বরের সমান (যা এক থেকে শুরু হয়)। তাই প্রথম সারিতে একটি মান থাকে, দ্বিতীয় সারিতে দুটি মান থাকে, আর এভাবেই চলতে থাকে।

প্রথম (সবচেয়ে উপরের) সারিতে একটি মাত্র মান থাকে: 1। পরের সারিগুলোর মান হিসাব করা হয় আগের সারিতে বর্তমান অবস্থানের ঠিক ডানে ও বামে থাকা সংখ্যাগুলো যোগ করে।

আগের সারিতে বর্তমান অবস্থানের বামে বা ডানে কোনো মান না থাকলে (যা কেবল একেবারে বামের ও একেবারে ডানের অবস্থানের ক্ষেত্রেই ঘটে), ওই অবস্থানের মান শূন্য ধরে নিন (অর্থাৎ যোগ করার সময় সেটি কার্যত "উপেক্ষা" করা হয়)।

উদাহরণ

চলুন প্যাসকেলের ত্রিভুজের প্রথম ৫টি সারি দেখি:

    1
   1 1
  1 2 1
 1 3 3 1
1 4 6 4 1

সবচেয়ে উপরের সারিতে একটি মান থাকে, সেটি 1।

একেবারে বামের ও একেবারে ডানের মানগুলোর বিবেচনা করার জন্য আগের সারিতে কেবল একটি অবস্থান থাকে, যা যথাক্রমে তাদের ডানের ও বামের অবস্থান। সবচেয়ে উপরের মানটি 1 হওয়ায় এ থেকে বোঝা যায়, একেবারে বামের ও একেবারে ডানের সব মানও 1।

বাকি মানগুলোর প্রতিটির ক্ষেত্রে দুটি অবস্থান বিবেচনা করতে হয়। যেমন, পঞ্চম সারির (1 4 6 4 1) মাঝের মানটি 6, কারণ আগের সারিতে তার বামে ও ডানে থাকা মান দুটি 3 ও 3:

GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Haskell Exercism

প্যাসকেলের ত্রিভুজ শুরু করতে প্রস্তুত?

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