我正在從項目歐拉問題22。Project Euler 22 Python |從正確的結果300k
使用names.txt(右鍵單擊和'保存鏈接/目標爲...'),一個包含五千多個名字的46K文本文件,首先將其按字母順序排序。然後計算每個名稱的字母值,將此值乘以列表中的字母位置以獲得名稱分數。 例如,當列表按字母順序排序時,值爲3 + 15 + 12 + 9 + 14 = 53的COLIN是列表中的第938個名稱。因此,COLIN將獲得938×53 = 49714的分數。 文件中所有名稱分數的總和是多少?
下面我的代碼適用於COLIN示例,我也嘗試了一個5個名字的小列表,它是正確的。但在這裏我的結果是870873746,它應該是871198282.因此〜324k缺失。 我編輯了names.txt文件。每個名稱都在一行中,沒有「」。
nameList = []
letterDict = {"A" : 1, "B" : 2, "C" : 3, "D" : 4, "E" : 5, "F" : 6, "G" : 7, "H" : 8, "I" : 9, "J" : 10, "K" : 11, "L" : 12, "M" : 13, "N" : 14, "O" : 15, "P": 16, "Q" : 17, "R" : 18, "S" : 19, "T" : 20, "U" : 21, "V" : 22, "W" : 23, "X" : 24, "Y" : 25, "Z" : 26}
a = 0
namescoresum = 0
b = 0
c = 0
while a < 5163:
x = raw_input()
nameList.append(x)
a += 1
nameList.sort()
print nameList
for name in nameList:
b += 1
lettersum = 0
for letter in name:
c += 1
lettersum += letterDict[letter]
indexofname = nameList.index(name)
namescoresum += (lettersum * indexofname)
print "NAMESCORESUM: ", namescoresum
呀。謝謝 :) – Mr3m4r3