我正在尝试解决Project Euler的问题14(http://projecteuler.net/problem=14),并且我使用Haskell达到了死胡同.
现在,我知道这些数字可能足够小,我可以做一个蛮力,但这不是我锻炼的目的.我试图记住一个Map类型的中间结果,Map Integer (Bool, Integer)意思是:
- the first Integer (the key) holds the number
- the Tuple (Bool, Interger) holds either (True, Length) or (False, Number)
where Length = length of the chain
Number = the number before him
Run Code Online (Sandbox Code Playgroud)
例如:
for 13: the chain is 13 ? 40 ? 20 ? 10 ? 5 ? 16 ? 8 ? 4 ? 2 ? 1
My map should contain :
13 - (True, 10) …Run Code Online (Sandbox Code Playgroud)