aboutsummaryrefslogtreecommitdiff
path: root/python/17-number_letter_count.py
blob: 99988311ec4767678d063cf9ff30c8a162c7e0a8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
w_nums = {
    '0': '',
    '00': '',
    '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'
}
w_nums = {key: len(val) for (key, val) in w_nums.items()}

def two_digit_num(num):
    if num[0] == '1':
        return w_nums[num]
    else:
        return w_nums[num[0] + '0'] + w_nums[num[1]]


c = 0
for num in [str(n) for n in range(1, 1001)]:
    c += [
        lambda: w_nums[num],
        lambda: two_digit_num(num),
        lambda: (
            w_nums[num[0]] + w_nums['100']
            + (len('and') if num[1:] != '00' else 0)
            + two_digit_num(num[1:])
        ),
        lambda: len('onethousand')
    ][len(num)-1]()
    
print(c)