Я пытался решить задачу 17 эйлера проекта. Однако мой ответ 21088, но правильный ответ - 21124. Мой ответ должен быть выше 36. Я не могу понять, что не так. Может ли кто-нибудь помочь?Project Euler 17 с помощью Python 2.7
Код:
dict = {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: 'onethousand'}
def pronounce(number):
if number < 21:
words = dict[number]
string = str(number)
if 21 <= number < 100:
words = dict[int(string[0])*10] + dict[int(string[1])]
if 100 <= number < 1000:
words = dict[int(string[0])] + dict[100] + 'and' + dict[int(string[1])*10] + dict[int(string[2])]
if number % 100 == 0:
words = dict[int(string[0])] + dict[100]
if number == 1000:
words = dict[1000]
return words
full = ''
for i in range(1,1001):
full += pronounce(i)
print full
print len(full)
В чем проблема? Кроме того, пожалуйста, правильно отформатируйте свой код, вставив четыре пробела перед каждой строкой. Кнопка «Код образца» на панели инструментов редактора (Ctrl + K) сделает это за вас. – Ryan
Совет: не используйте встроенные функции Python в качестве имен переменных. В этом случае не используйте 'dict', а что-то вроде' my_dict'. – Evert
Вы не упомянули, какой проект № 17 Эйлера; вы не указываете, какова цель вашей программы. Поскольку мы не хотим искать вокруг него (и не все узнают наизусть, что это такое), вы должны [изменить] свой вопрос, чтобы обновить его с соответствующей информацией. – Evert