簡體   English   中英

我在這里想念什么? (ProjectEuler P017)

[英]What am I missing here? (ProjectEuler P017)

因此,我在查看以下簡單代碼時遇到了麻煩:

a = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
b = ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen']
c = ['twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety']
d = ['hundred', 'thousand', 'and']
e = a + b + c + d

sum_0 = 0
for i in e:
    sum_0 += len(i)

# 21, 22.. 99
sum_1 = 0
for i in c:
    for j in a:
        sum_1 += len(i + j)

# 100, 200.. 900
sum_2 = 0
for i in a:
    sum_2 += len(i + d[0])

# 101, 102.. 909
sum_3 = 0
for i in a:
    for j in a:
        sum_3 += len(i + d[0] + d[2] + j)

# 110, 111.. 119
sum_4 = 0
for i in a:
    for j in b:
        sum_4 += len(i + d[0] + d[2] + j)

# 120, 130.. 990
sum_5 = 0
for i in a:
    for j in c:
        sum_5 += len(i + d[0] + d[2] + j)

# 121, 122.. 999
sum_6 = 0
for i in a:
    for j in c:
        for k in a:
            sum_6 += len(i + d[0] + d[2] + j + k)

當我print sum_0 + sum_1 + sum_2 + sum_3 + sum_4 + sum_5 + sum_6 + 3 ,我得到21134,這比正確答案多了10。 我在這里想念什么?

*順便說一句, sum_6之后的3是“一千”中“一”的長度

您兩次計數100 (one hundred)

第一次在這里(實際上使用'hundred', 'and' ,但oneand均為三個字母長):

d = ['hundred', 'thousand', 'and']
e = a + b + c + d

sum_0 = 0
for i in e:
    sum_0 += len(i)

第二次在這里:

# 100, 200.. 900
sum_2 = 0
for i in a:
    sum_2 += len(i + d[0])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM