只是想爲您在閱讀本文時可能遇到的一般編碼和邏輯錯誤事先道歉。我最近發現了歐拉計劃,並認爲這很有趣。我已經明確指出,不僅要找到答案,而且還要提供一個通用函數,可以在給定相應輸入的情況下找到任何類似案例的答案。舉例來說,問題編號4,涉及迴文,可以在這裏看到:https://projecteuler.net/problem=4如何避免列表分析迴文的順序?
基本上我所做的是找到一種方法來乘以給定的位數號碼的每一個可能的組合,n,則發現了迴文產品。但是,高於3位的數字只是需要太長時間才能處理。我相信這是因爲我使用list()函數來利用索引來確定產品是否是迴文。有沒有另一種方法來做這種性質的事情?我覺得這是通過一個圓孔推倒正方形。
這裏是有問題的功能。
def palindrome(n):
number = 0
for i in range(0,n):
number = number + 9 * pow(10, i)
a = pow(10, n - 1) - 1
b = pow(10, n - 1)
while a * b < number * number:
a = a + 1
b = a
while b <= number:
c = a * b
b = b + 1
digits = list(str(int(c)))
lastdigits = digits[::-1]
numdigits = len(digits)
middle = int((numdigits - (numdigits % 2))/2) - 1
if numdigits > 1 and digits[:middle + 1] == lastdigits[:middle + 1] and digits[0] == digits[-1] == '9' and numdigits == 2 * n:
print(c)
您的問題在這裏肯定與使用列表無關。事實上,python中迴文檢查的簡單解決方案很大程度上依賴於切片符號。您的問題出現在您的while循環中,這些while循環需要基於輸入值進行指數級更大數量的迭代。你應該問自己,「這些真的有必要嗎?」 (提示:他們不是)。 –
是的,看到第一個響應後,我意識到這完全是我如何接近解決方案。 – quesadyllan
請不要將_solved_添加到標題中。通過接受答案,告訴其他人現在問題已經解決。謝謝。 – Bugs