0
以前的答案
我做的項目歐拉問題63,我必須找到存在的數量,其中:如何使哈斯克爾使用另一個列表取決於哈斯克爾
x^(n) == y
凡n
是y
長度。
它很快出現,對於奇之間的這種交替條件的結果,甚至,所以我在Haskell想出了這一點:
prob63 = [ n | n <- nums n , i <-[1..10], i^(length $ show n) == n]
nums n | odd (n) == True = filter odd [n..]
| otherwise = filter even [n..]
如果n < - [1 ..],prob63產生流,其看起來像這樣:
[1,2,3,4,5,6,7,8,9,16,25,36,49,64,81,125,216,343,512,729,1296,2401,4096,6561,16807,32768,59049,117649,262144,531441]
但是這很慢,我後來想到的不起作用。我需要的是,根據以前的答案,它將開始測試來自n
的奇數或偶數。我如何從現有的東西中解脫出來?
難道那個單對只是一個異常情況? –
不,還有另一個,你可以看到:59049,117649。此外,也許你應該迭代基礎和權力(而不是權力和* n *),並確定兩者的上限。這個問題有一個非常快速的解決方案。 – Stephan202
此外,它似乎在學習Haskell的這個階段,我知道需要做什麼,但我常常不知道如何實現它。我想到了一個優化,它開始搜索n的下一個值,即'(當前n)+(當前與之前的差值)' –