def translate(number): """ Given a number between 1 and 3999 returns the equivalent roman numeral """ # Gets the proper combination for every digit return ROMAN_10000[get_digit(number, 4)] + \ ROMAN_1000[get_digit(number, 3)] + \ ROMAN_100[get_digit(number, 2)] + \ ROMAN_10[get_digit(number, 1)]
def show(limit): """ Prints all the roman numerals from 1 to a given limit """ for i in range(1, limit + 1): result = ROMAN_10000[get_digit(i, 4)] + \ ROMAN_1000[get_digit(i, 3)] + \ ROMAN_100[get_digit(i, 2)] + \ ROMAN_10[get_digit(i, 1)] print(i, result)
def _execute_opt(self, opt_code): digits = [util.get_digit(opt_code, x) for x in range(5)] opt_code = digits[0] + 10 * digits[1] param_modes = digits[2:] if opt_code == 1: self._opt_1(param_modes) elif opt_code == 2: self._opt_2(param_modes) elif opt_code == 3: self._opt_3(param_modes) elif opt_code == 4: self._opt_4(param_modes) elif opt_code == 5: self._opt_5(param_modes) elif opt_code == 6: self._opt_6(param_modes) elif opt_code == 7: self._opt_7(param_modes) elif opt_code == 8: self._opt_8(param_modes) elif opt_code == 9: self._opt_9(param_modes) elif opt_code == 99: self.state = self.STATE_HALTED
def translate_to_roman(number): """ Given a number between 1 and 3999 returns the equivalent roman numeral """ result = '' for i in reversed(range( 1, 5)): # Run the function for every range of roman numerals result += to_roman(get_digit(number, i), TO_ROMAN[10**(i - 1)], TO_ROMAN[10**(i - 1) * 5], TO_ROMAN[10**i]) return result
def test_get_digit(self): self.assertEqual(get_digit(5438, 1), 8) self.assertEqual(get_digit(5438, 2), 3) self.assertEqual(get_digit(5438, 3), 4) self.assertEqual(get_digit(5438, 4), 5) self.assertEqual(get_digit(5438, 5), 0) self.assertEqual(get_digit(5438, 20), 0)