top of page

המרה לספרות רומיות




לפעמים הבעיות הכי מעניינות הן אלה שניתן לתאר בצורה הפשוטה ביותר. התבקשתי לתת פתרון לבעיה שניתן לתאר ב-4 מילים – המרת מספרים לספרות רומיות. ובקצת יותר מילים: כתיבת תכנית שתקבל מספר דצימלי (עשרוני) ותחזיר אותו בגרסתו הרומית. לאלה מכם שלא סגורים על איך בדיוק השיטה הרומית עובדת, כדאי להציץ כאן (גם אני הייתי זקוק לרענון לפני שהתיישבתי לכתוב את הפתרון)


יש גם חלק שני לבעיה והוא גם מאתגר יותר (אכתוב על הפתרון שלו בפוסט המשך)


הערה קטנה לפני שמתחילים, הכתב הרומי, מסתבר, תומך בכתיבה של מספרים עד המספר 3,999,999 (כנראה שלתקופה ההיא זה היה מספיק). החל מ-5000 האותיות מקבלות מן קו כזה מעליהן שבכל הכנות אני לא יודע איך להפיק עם המקלדת שלי אז אתייחס לספרות הרומיות עד M (אלף) מה שיאפשר לי להגיע עד המספר הלא כל כך מרשים 3,999. בנוסף, הכתב הרומי לא מכיל ייצוג של 0 או מספרים שליליים אז פתרתי את עצמי גם מעונשם של אלה.


בשלב הראשון נייצר מבנה נתונים כלשהו שיכיל את הספרות הרומיות והמקבילה העשרונית של כל אחת מהן. האובייקט הזה יהיה הבסיס לכל המרה שנבצע ובאופן טבעי בחרתי במילון אבל זה יכול באותה מידה גם להיות ר