Skip to content
On this page

12_Class_35.py

WARNING

โค้ดกาวมากครับ อย่าลอกเลย 😭😭😭

ทำเองเถอะนะครับ จะได้ทำข้อสอบได้ 🥲🥲🥲

py
class roman:
    def __init__(self, r):
        self._str = r

    _VAL = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}

    def __lt__(self, rhs):
        return int(self) < int(rhs)

    def __str__(self):
        return self._str

    def __int__(self):
        total = 0

        strlen = len(self._str)
        for i in range(strlen):
            if i < strlen - 1 and self._VAL[self._str[i]] < self._VAL[self._str[i+1]]:
                total -= self._VAL[self._str[i]]

            else:
                total += self._VAL[self._str[i]]

        return total

    _NUM = [1, 4, 5, 9, 10, 40, 50, 90,
            100, 400, 500, 900, 1000]

    _SYM = ["I", "IV", "V", "IX", "X", "XL",
            "L", "XC", "C", "CD", "D", "CM", "M"]

    def _to_roman(self, num):
        i = 12
        res = ""

        while num:
            div = num // self._NUM[i]
            num %= self._NUM[i]

            while div:
                res += self._SYM[i]
                div -= 1
            i -= 1

        return res

    def __add__(self, rhs):
        return roman(self._to_roman(int(self) + int(rhs)))


t, r1, r2 = input().split()
a = roman(r1)
b = roman(r2)
if t == '1':
    print(a < b)
elif t == '2':
    print(int(a), int(b))
elif t == '3':
    print(str(a), str(b))
elif t == '4':
    print(int(a + b))
else:
    print(str(a + b))

People who plagiarize Com Prog HW:

People who do Com Prog HW by themself:

Released under the MIT License