Created
December 9, 2016 10:12
-
-
Save RossignolVincent/1b3e33658117c723d0fe392271b29893 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import unittest | |
from math import * | |
class KataTests(unittest.TestCase): | |
def test_on_one(self): | |
self.assertEqual(number_to_roman(1), "I") | |
def test_on_two(self): | |
self.assertEqual(number_to_roman(2), "II") | |
def test_on_three(self): | |
self.assertEqual(number_to_roman(3), "III") | |
def test_on_four(self): | |
self.assertEqual(number_to_roman(4), "IV") | |
def test_on_five(self): | |
self.assertEqual(number_to_roman(5), "V") | |
def test_on_six(self): | |
self.assertEqual(number_to_roman(6), "VI") | |
def test_on_seven(self): | |
self.assertEqual(number_to_roman(7), "VII") | |
def test_on_nine(self): | |
self.assertEqual(number_to_roman(9), "IX") | |
def test_on_ten(self): | |
self.assertEqual(number_to_roman(10), "X") | |
def test_on_twenty(self): | |
self.assertEqual(number_to_roman(20), "XX") | |
def test_on_fourty(self): | |
self.assertEqual(number_to_roman(40), "XL") | |
def test_on_fifty(self): | |
self.assertEqual(number_to_roman(50), "L") | |
def test_on_sixty(self): | |
self.assertEqual(number_to_roman(60), "LX") | |
def test_on_eighty(self): | |
self.assertEqual(number_to_roman(80), "LXXX") | |
def test_on_ninety(self): | |
self.assertEqual(number_to_roman(90), "XC") | |
def test_on_one_hundred(self): | |
self.assertEqual(number_to_roman(100), "C") | |
def test_on_two_hundred(self): | |
self.assertEqual(number_to_roman(200), "CC") | |
def test_on_four_hundred(self): | |
self.assertEqual(number_to_roman(400), "CD") | |
def test_on_five_hundred(self): | |
self.assertEqual(number_to_roman(500), "D") | |
def test_on_six_hundred(self): | |
self.assertEqual(number_to_roman(600), "DC") | |
def test_on_nine_hundred(self): | |
self.assertEqual(number_to_roman(900), "CM") | |
def test_on_one_thousand(self): | |
self.assertEqual(number_to_roman(1000), "M") | |
def test_on_two_thousand(self): | |
self.assertEqual(number_to_roman(2000), "MM") | |
def test_on_twenty_one(self): | |
self.assertEqual(number_to_roman(22), "XXII") | |
def number_to_roman(n): | |
result = "" | |
i = len(str(n)) | |
while n >= 1 : | |
result += digit_to_roman(n) | |
n -= pow(10,i) | |
i -= 1 | |
return result | |
def digit_to_roman(n): | |
if n >= 1000 : | |
return "M" * int(n/1000) | |
if n == 900 : | |
return "CM" | |
if n >= 500 : | |
return "D" + "C" * int((n-500)/100) | |
if n == 400 : | |
return "CD" | |
if n >= 100 : | |
return "C" * int(n/100) | |
if n == 90 : | |
return "XC" | |
if n >= 50 : | |
return "L" + "X" * int((n-50)/10) | |
if n == 40 : | |
return "XL" | |
if n >= 10 : | |
return "X" * int(n/10) | |
if n == 9 : | |
return "IX" | |
if n >= 5 : | |
return "V" + "I" * int(n-5) | |
if n == 4 : | |
return "IV" | |
return "I" * n | |
def main(): | |
unittest.main() | |
if __name__ == '__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment