ট্র্যাক
/
Crystal
Crystal
/
অনুশীলনী
/
রোমান সংখ্যা
রোমান সংখ্যা

রোমান সংখ্যা

সহজ

ভূমিকা

আজ বিশ্বের বেশিরভাগ মানুষ আরবি সংখ্যা (০–৯) ব্যবহার করে। কিন্তু আপনি যদি দুই হাজার বছর পিছিয়ে যেতেন, তাহলে দেখতে পেতেন যে বেশিরভাগ ইউরোপীয় বরং রোমান সংখ্যা ব্যবহার করছিলেন।

একটি রোমান সংখ্যা লিখতে আমরা নিচের লাতিন অক্ষরগুলো ব্যবহার করি, যার প্রত্যেকটির একটি মান আছে:

M D C L X V I
1000 500 100 50 10 5 1

একটি রোমান সংখ্যা হলো এই অক্ষরগুলোর একটি ক্রম, আর এর মান হলো অক্ষরগুলোর মানের যোগফল। উদাহরণস্বরূপ, XVIII-এর মান ১৮ (10 + 5 + 1 + 1 + 1 = 18)।

তবে একটি নিয়ম বিষয়টা আরও জটিল করে তোলে, সেটি হলো একই অক্ষর পরপর তিনবারের বেশি ব্যবহার করা যাবে না। এর মানে হলো, ৪-এর মতো সংখ্যা আপাতদৃষ্টিতে স্বাভাবিক লাগা IIII দিয়ে প্রকাশ করা যায় না। তার বদলে ওই সংখ্যাগুলোর জন্য আমরা দুটি অক্ষরের মধ্যে বিয়োগ পদ্ধতি ব্যবহার করি। তাই আমরা 4-কে 1 + 1 + 1 + 1 হিসেবে নয়, বরং 5 - 1 হিসেবে ভাবি। আর আমাদের আধুনিক চিন্তাধারার কাছে একটু বিভ্রান্তিকর হলেও, আমরা ছোট সংখ্যাটি আগে লিখি। এটি কেবল নিচের ক্ষেত্রগুলোতেই প্রযোজ্য: ৪ (IV), ৯ (IX), ৪০ (XL), ৯০ (XC), ৪০০ (CD) এবং ৯০০ (CM)।

রোমান সংখ্যায় ক্রম গুরুত্বপূর্ণ! অক্ষরগুলো (এবং উপরের বিশেষ সংমিশ্রণগুলো) বাম থেকে ডানে মান কমার ক্রমে সাজানো থাকতে হবে।

এখানে কয়েকটি উদাহরণ:

 105 => CV
---- => --
 100 => C
+  5 =>  V
 106 => CVI
---- => --
 100 => C
+  5 =>  V
+  1 =>   I
 104 => CIV
---- => ---
 100 => C
+  4 =>  IV

আর শেষে আরও জটিল একটি উদাহরণ:

 1996 => MCMXCVI
----- => -------
 1000 => M
+ 900 =>  CM
+  90 =>    XC
+   5 =>      V
+   1 =>       I

নির্দেশনা

আপনার কাজ হলো একটি সংখ্যাকে আরবি সংখ্যা থেকে রোমান সংখ্যায় রূপান্তর করা।

এই অনুশীলনীতে আমরা কেবল প্রচলিত রোমান সংখ্যা নিয়েই কাজ করব, যেখানে সবচেয়ে বড় সংখ্যাটি MMMCMXCIX (বা 3,999)।

Note

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

শেষে আমাদের Deep Dive ভিডিওটি দেখতে ভুলবেন না, যেখানে আপনি কোন কোন পদ্ধতি নিতে পারেন তা জানতে পারবেন!

Int স্ট্রাক্টে মেথড যোগ করা

এই অনুশীলনীতে Crystal-এর Int স্ট্রাক্টে মেথড যোগ করার দিকে মনোযোগ দেওয়া হয়েছে। এটি করতে হলে আপনাকে Int নামে একটি স্ট্রাক্ট ডিফাইন করতে হবে। আর মেথডটি এই স্ট্রাক্টের ভেতরে রাখতে হবে।

struct Int
  # your solution here
end

Int ক্লাসের সোর্স কোড এখানে পাওয়া যাবে।


সূত্র

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

রোমান সংখ্যা শুরু করতে প্রস্তুত?

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

ডিপ ডাইভ: রোমান সংখ্যা!

এই কঠিন অনুশীলনীর নানা রকম সমাধান ঘুরে দেখুন, রিকার্সন থেকে টেবিল-ভিত্তিক লুকআপ পর্যন্ত, মিক্সড রেডিক্স সংখ্যা ব্যবহার করা একটি সমাধান, আর Common Lisp দিয়ে করা কিছু সহজ ফাঁকি।