اليوم، يستخدم معظم الناس في العالم الأرقام العربية (0–9). لكن لو سافرت ألفي سنة إلى الوراء، لوجدت أن معظم الأوروبيين كانوا يستخدمون الأرقام الرومانية بدلًا منها.
لكتابة رقم روماني نستخدم الأحرف اللاتينية التالية، ولكل منها قيمة:
| M | D | C | L | X | V | I |
|---|---|---|---|---|---|---|
| 1000 | 500 | 100 | 50 | 10 | 5 | 1 |
الرقم الروماني هو تسلسل من هذه الأحرف، وقيمته مجموع قيم هذه الأحرف.
على سبيل المثال، قيمة XVIII هي 18 (10 + 5 + 1 + 1 + 1 = 18).
لكن هناك قاعدة واحدة تجعل الأمر أكثر صعوبة، وهي أنه لا يمكن استخدام الحرف نفسه أكثر من ثلاث مرات متتالية.
وهذا يعني أننا لا نستطيع التعبير عن أعداد مثل 4 بالكتابة IIII التي تبدو طبيعية.
بدلًا من ذلك، نستخدم في تلك الأعداد أسلوب طرح بين حرفين.
لذلك نفكّر في 4 لا على أنها 1 + 1 + 1 + 1 بل على أنها 5 - 1.
وبما يربك قليلًا تفكيرنا الحديث، نكتب العدد الأصغر أولًا.
وهذا ينطبق فقط في الحالات التالية: 4 (IV)، و9 (IX)، و40 (XL)، و90 (XC)، و400 (CD)، و900 (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).
هناك طرق عديدة ومختلفة للتحويل بين الأرقام العربية والأرقام الرومانية. نوصي بأن تتبع أسلوبًا بسيطًا في البداية لتتعرف على مفهوم الأرقام الرومانية، ثم تبحث عن طرق أكثر كفاءة.
احرص على مشاهدة فيديو Deep Dive الخاص بنا في النهاية لاستكشاف الأساليب المختلفة التي يمكنك اتباعها!
سجّل في Exercism لتتعلّم وتتقن COBOL عبر 46 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.
استكشف مجموعة متنوعة من الحلول المختلفة لهذا التمرين الصعب، بدءًا من الاستدعاء الذاتي وصولًا إلى البحث المعتمد على الجداول، وحل يستفيد من الأعداد ذات الأساس المختلط، وبعض أساليب الغش المبسطة من Common Lisp.