Jon*_*FTW 1 haskell palindrome
我正在研究Project Euler Problem 4,并且需要找到2个3位数字的乘积的回文,所以我想出了:
palindrome = [ x*y | x <- [100..999], y <- [100..999], reverse [x*y] == [x*y]]
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用,我怎样才能使它工作?我怀疑我需要以某种方式将答案放入列表中,以便将其反转并检查它是否是回文.
这部分
reverse [x*y] == [x*y]
Run Code Online (Sandbox Code Playgroud)
是错的.[x*y]是一个包含单个元素的列表:结果x*y.反面是相同的清单......
你想要的是数字反转的数字.您需要一个包含数字位数的列表.一个简单的技巧是将数字转换为其字符串表示(请记住type String = [Char]).为此,您可以使用show,而不是[ ]:
palindrome = [ x*y | x <- [100..999], y <- [100..999], reverse (show (x*y)) == show (x*y)]
Run Code Online (Sandbox Code Playgroud)