diff --git a/src/Python/Problems001-050/Problem017.py b/src/Python/Problems001-050/Problem017.py index 48953ee..258ff94 100644 --- a/src/Python/Problems001-050/Problem017.py +++ b/src/Python/Problems001-050/Problem017.py @@ -11,14 +11,40 @@ https://projecteuler.net/problem=17 from utils import timeit + def num2letters(num): - nums = {0: '', 1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 'five', - 6: 'six', 7: 'seven', 8: 'eight', 9: 'nine', 10: 'ten', - 11: 'eleven', 12: 'twelve', 13: 'thirteen', 14: 'fourteen', - 15: 'fifteen', 16: 'sixteen', 17: 'seventeen', 18: 'eighteen', - 19: 'nineteen', 20: 'twenty', 30: 'thirty', 40: 'forty', - 50: 'fifty', 60: 'sixty', 70: 'seventy', 80: 'eighty', - 90: 'ninety', 100: 'hundred', 1000: 'thousand'} + nums = { + 0: "", + 1: "one", + 2: "two", + 3: "three", + 4: "four", + 5: "five", + 6: "six", + 7: "seven", + 8: "eight", + 9: "nine", + 10: "ten", + 11: "eleven", + 12: "twelve", + 13: "thirteen", + 14: "fourteen", + 15: "fifteen", + 16: "sixteen", + 17: "seventeen", + 18: "eighteen", + 19: "nineteen", + 20: "twenty", + 30: "thirty", + 40: "forty", + 50: "fifty", + 60: "sixty", + 70: "seventy", + 80: "eighty", + 90: "ninety", + 100: "hundred", + 1000: "thousand", + } if num <= 20: return len(nums[num]) @@ -28,14 +54,16 @@ def num2letters(num): elif num < 1000: hundreds, rest = divmod(num, 100) if rest: - return num2letters(hundreds) + len(nums[100]) + len('and') +\ - num2letters(rest) + return ( + num2letters(hundreds) + len(nums[100]) + len("and") + num2letters(rest) + ) else: return num2letters(hundreds) + len(nums[100]) else: thousands, rest = divmod(num, 1000) return num2letters(thousands) + len(nums[1000]) + @timeit("Problem 17") def compute(): """ @@ -59,4 +87,4 @@ def compute(): if __name__ == "__main__": - print(f"Result for Problem 17: {compute()}") \ No newline at end of file + print(f"Result for Problem 17: {compute()}")