ডায়মন্ড

ডায়মন্ড

সহজ

নির্দেশনা

ডায়মন্ড কাটা ইনপুট হিসেবে একটি বর্ণ নেয় এবং সেটিকে হীরার আকারে আউটপুট দেয়। একটি বর্ণ দেওয়া হলে এটি 'A' দিয়ে শুরু করে একটি হীরা আউটপুট দেয়, যেখানে সরবরাহ করা বর্ণটি সবচেয়ে চওড়া জায়গায় থাকে।

প্রয়োজনীয়তা

  • প্রথম সারিতে একটি 'A' থাকে।
  • শেষ সারিতে একটি 'A' থাকে।
  • প্রথম ও শেষ সারি ছাড়া বাকি সব সারিতে ঠিক দুটি অভিন্ন বর্ণ থাকে।
  • প্রতিটি সারিতে শুরুতে যতগুলো স্পেস থাকে, শেষেও ঠিক ততগুলো স্পেস থাকে। (এটি ০-ও হতে পারে।)
  • হীরাটি অনুভূমিকভাবে প্রতিসম।
  • হীরাটি উল্লম্বভাবে প্রতিসম।
  • হীরাটি বর্গাকার (প্রস্থ উচ্চতার সমান)।
  • বর্ণগুলো মিলে একটি হীরার আকার তৈরি করে।
  • উপরের অর্ধেকে বর্ণগুলো ঊর্ধ্বক্রমে সাজানো থাকে।
  • নিচের অর্ধেকে বর্ণগুলো নিম্নক্রমে সাজানো থাকে।
  • চারটি কোণা (যেখানে স্পেসগুলো আছে) ত্রিভুজাকার।

উদাহরণ

নিচের উদাহরণগুলোতে স্পেস বোঝাতে · অক্ষর ব্যবহার করা হয়েছে।

'A' বর্ণের জন্য হীরা:

A

'C' বর্ণের জন্য হীরা:

··A··
·B·B·
C···C
·B·B·
··A··

'E' বর্ণের জন্য হীরা:

····A····
···B·B···
··C···C··
·D·····D·
E·······E
·D·····D·
··C···C··
···B·B···
····A····

ইঙ্গিত

আপনাকে diamond ফাংশনটি ইমপ্লিমেন্ট করতে হবে, যা A থেকে শুরু হয়ে একটি ডায়মন্ড প্রিন্ট করে এবং যার সবচেয়ে প্রশস্ত বিন্দুতে থাকে প্রদত্ত ক্যারেক্টারটি। টাইপ নিয়ে নিশ্চিত না থাকলে দেওয়া সিগনেচারটি ব্যবহার করতে পারেন, তবে তা যেন আপনার সৃজনশীলতাকে সীমাবদ্ধ না করে:

diamond :: Char -> Maybe [String]

এই অনুশীলনীটি টেক্সট ডেটা নিয়ে কাজ করে। ঐতিহাসিক কারণে হাস্কেলের String টাইপ [Char]-এর সমার্থক, অর্থাৎ ক্যারেক্টারের একটি অ্যারে। টেক্সট ডেটা আরও দক্ষভাবে সামলাতে Text টাইপটি ব্যবহার করা যায়।

এই অনুশীলনীর একটি ঐচ্ছিক সম্প্রসারণ হিসেবে আপনি করতে পারেন

import qualified Data.Text as T
import           Data.Text (Text)
  • এখন আপনি লিখতে পারেন যেমন diamond :: Char -> Maybe [Text], এবং Data.Text-এর কম্বিনেটরগুলো উল্লেখ করতে পারেন যেমন T.pack,
  • Data.Text-এর ডকুমেন্টেশন দেখে নিন,
  • এরপর Diamond.hs-এ String-এর সব জায়গায় Text বসাতে পারেন:
diamond :: Char -> Maybe [Text]

এই অংশটি সম্পূর্ণ ঐচ্ছিক।


সূত্র

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

ডায়মন্ড শুরু করতে প্রস্তুত?

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