Haskell 调查结果;“差距”;在一系列数字中
我在浏览清单时遇到了麻烦。我做了这个代码,它给了我一个数字列表,这些数字被它们的数字之和平分。例如,考虑数字123:123/6=20.5,因此它将不在列表中。另一方面,280将出现在列表中,因为280/10=28Haskell 调查结果;“差距”;在一系列数字中,haskell,Haskell,我在浏览清单时遇到了麻烦。我做了这个代码,它给了我一个数字列表,这些数字被它们的数字之和平分。例如,考虑数字123:123/6=20.5,因此它将不在列表中。另一方面,280将出现在列表中,因为280/10=28 let inaHelper x = (floor(x)`mod`10)+ (floor(x/10)`mod`10)+(floor(x/100)`mod`10) let ina = [x | x <- [1..999] , x `mod` (inaHelper x) == 0
let inaHelper x = (floor(x)`mod`10)+ (floor(x/10)`mod`10)+(floor(x/100)`mod`10)
let ina = [x | x <- [1..999] , x `mod` (inaHelper x) == 0 ]
我是初学者,有人能帮忙吗?一种简单但效率不高的方法是制作一个helper函数,用于检查列表中是否有某个元素在某个范围内:
hasElemInRange :: (Int,Int) -> [Int] -> Bool
hasElemInRange (lo, hi) xs = -- left as exercise
(提示:您可以使用该功能)
然后你可以把它包括在你的理解列表中:
let rare = [ x | x <- ina, hasElemInRange (x-5,x+5) ina ]
它将为列表中的每个元素提供其“上下文”,即前后的元素。也许你可以想出如何使用它来满足你的需要。一种简单但效率不高的方法是制作一个助手函数,用于检查列表中是否有某个元素在某个范围内:
hasElemInRange :: (Int,Int) -> [Int] -> Bool
hasElemInRange (lo, hi) xs = -- left as exercise
(提示:您可以使用该功能)
然后你可以把它包括在你的理解列表中:
let rare = [ x | x <- ina, hasElemInRange (x-5,x+5) ina ]
它将为列表中的每个元素提供其“上下文”,即前后的元素。也许你可以想出如何使用它来满足你的需要。不要使用floor,使用div。不要使用floor,使用div。