2.14. Arytmetyka liczb w zapisie rzymskim

Problem

Chcemy wykonywać działania arytmetyczne na liczbach w zapisie rzymskim, otrzymując wyniki w takim samym zapisie.

Rozwiązanie

Problem ten jest bardzo podobny do dyskutowanego w poprzedniej recepturze. Najprostszym sposobem jego rozwiązania jest zdefiniowanie subklasy klasy Fixnum, która to subklasa delegować będzie wywołania niemal wszystkich swoich metod do (wewnętrznego) obiektu typu Fixnum. Rozpoczniemy od stworzenia kontenera dla klasy delegującej oraz zdefiniowania metod konwersji między rzymskim i arabskim zapisem liczb.

class Roman # Poniższe tablice wiążą podstawowe elementy rzymskiego zapisu liczb # z ich arabskimi odpowiednikami. @@roman_to_arabic = [['M', 1000], ['CM', 900], ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.