From 47aa51e093a23020732fc2e8c86bdb90672cbdc5 Mon Sep 17 00:00:00 2001 From: Linus Miller Date: Thu, 29 Mar 2018 10:31:31 +0200 Subject: [PATCH] Problem 17 --- 0017.py | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 0017.py diff --git a/0017.py b/0017.py new file mode 100644 index 0000000..4d02252 --- /dev/null +++ b/0017.py @@ -0,0 +1,97 @@ +from functools import reduce + +target = 21124 + +# 1 = 'one' +# 2 = 'two' +# 3 = 'three' +# 4 = 'four' +# 5 = 'five' +# 6 = 'sixe' +# 7 = 'seven' +# 8 = 'eight' +# 9 = 'nine' +# 10 = 'ten' + +nbrs = [ + '', + 'one', + 'two', + 'three', + 'four', + 'five', + 'six', + 'seven', + 'eight', + 'nine', + 'ten', + 'eleven', + 'twelve', + 'thirteen', + 'fourteen', + 'fifteen', + 'sixteen', + 'seventeen', + 'eighteen', + 'nineteen', +] + +decades = [ + None, + None, + 'twenty', + 'thirty', + 'forty', + 'fifty', + 'sixty', + 'seventy', + 'eighty', + 'ninety', +] + +loads = [ + 'hundred', + 'thousand', +] + +def number_to_string(nbr): + thousand = nbr // 1000 + hundred = (nbr % 1000) // 100 + under_hundred = nbr % 100 + + string = '' + + if (thousand > 0): + string += nbrs[thousand] + 'thousand' + + if (hundred > 0): + string += nbrs[hundred] + 'hundred' + + end_string = '' + + if (under_hundred < 20): + end_string += nbrs[under_hundred] + else: + decade = under_hundred // 10 + single = nbr % 10 + + end_string += decades[decade] + nbrs[single] + + if (end_string): + if (string): + string += 'and' + + string += end_string + + + return string + +def count_len(result, nbr): + string = number_to_string(nbr) + + return result + len(string) + +result = reduce(count_len, list(range(1, 1001)), 0) + +print(result) +print(result == target)