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.