ডায়মন্ড

ডায়মন্ড

কঠিন

নির্দেশনা

ডায়মন্ড কাটা ইনপুট হিসেবে একটি বর্ণ নেয় এবং সেটিকে হীরার আকারে আউটপুট দেয়। একটি বর্ণ দেওয়া হলে এটি '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····

ইঙ্গিত

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

  1. একটি প্রপার্টি-ভিত্তিক টেস্ট একটি মাত্র ইনপুট মান নিয়ে নয়, বরং অনেকগুলো মান নিয়ে কাজ করে।
  2. একটি প্রপার্টি-ভিত্তিক টেস্ট নির্দিষ্ট মান নয়, বরং প্রপার্টি যাচাই করে।

এই অনুশীলনীতে সব টেস্টই আপনার কোড যে ডায়মন্ড আকৃতি তৈরি করবে, তার একটি প্রপার্টি যাচাই করে। এর সঙ্গে, সব টেস্টই দেখে যে তারা যে প্রপার্টি যাচাই করে, সেটি সব বৈধ ইনপুট অক্ষরের ('A' থেকে 'Z') জন্য প্রযোজ্য কি না।

প্রপার্টি-ভিত্তিক টেস্টিং সহজ করতে, এই অনুশীলনীর টেস্টগুলো FsCheck এবং FsCheck.Xunit প্যাকেজ ব্যবহার করে। FsCheck সম্পর্কে আরও জানতে, ফ্রেমওয়ার্কটির ডকুমেন্টেশন পাওয়া যাবে এখানে।

প্রপার্টি-ভিত্তিক টেস্টিং সম্পর্কে আরও তথ্য চাইলে দেখুন এই লেখাটি।


সূত্র

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

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

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