Skip to content

Instantly share code, notes, and snippets.

@RossignolVincent
Created December 9, 2016 10:12
Show Gist options
  • Save RossignolVincent/1b3e33658117c723d0fe392271b29893 to your computer and use it in GitHub Desktop.
Save RossignolVincent/1b3e33658117c723d0fe392271b29893 to your computer and use it in GitHub Desktop.
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