مسیرها
/
Roc
Roc
/
تمرین‌ها
/
اعداد رومی
اعداد رومی

اعداد رومی

آسان

مقدمه

امروزه بیشتر مردم جهان از اعداد عربی (۰ تا ۹) استفاده می‌کنند. اما اگر دو هزار سال به عقب برگردید، می‌بینید که بیشتر اروپایی‌ها به‌جای آن از اعداد رومی استفاده می‌کردند.

برای نوشتن یک عدد رومی از حروف لاتین زیر استفاده می‌کنیم که هر کدام یک مقدار دارند:

M D C L X V I
۱۰۰۰ ۵۰۰ ۱۰۰ ۵۰ ۱۰ ۵ ۱

یک عدد رومی دنباله‌ای از این حروف است و مقدارش برابر با مجموع مقدارهای آن حروف است. برای نمونه، 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 (یا ۳٬۹۹۹) است.

Note

راه‌های مختلف زیادی برای تبدیل بین اعداد عربی و رومی وجود دارد. توصیه می‌کنیم ابتدا یک رویکرد ساده را در پیش بگیرید تا با مفهوم اعداد رومی آشنا شوید و سپس به دنبال روش‌های کارآمدتر بگردید.

حتماً ویدیوی «Deep Dive» ما را در انتها ببینید تا با رویکردهای مختلفی که می‌توانید در پیش بگیرید آشنا شوید!

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Roc Exercism

آماده‌اید اعداد رومی را شروع کنید؟

در Exercism ثبت‌نام کنید تا Roc را همراه با 120 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.

بررسی عمیق اعداد رومی!

راه‌حل‌های متنوعی برای این تمرین دشوار را بررسی کنید؛ از بازگشت تا جست‌وجوهای مبتنی بر جدول، راه‌حلی که از اعداد با مبنای مختلط بهره می‌برد و مقداری تقلب ساده‌لوحانه از سوی Common Lisp.