First Report Data Second Report Data ---------------- ------------------- DitrictID DistrictID CityID CityName 3 6 2 XYZ 14 3 1 pqr 5 6 3 zzz 6
好的,第一次尝试使用Haskell,只有新手Java知识导致了一些问题。 我试图做的是将函数listX n的结果定义为名为xs的列表。 我的想法是程序会抓取从1到n的每个数字,并检查它是否等于其正除数的总和。 显然,我已经失败了,并且需要帮助,对我未理解的概念的指示非常感激。
答案 0 :(得分:3)
您的主要问题似乎是您仍然认为必要(使用insert
) - ()
也是值单位 - 您可能想写{{1 (而空列表)相反 - 但这里的[]
仍然是完全未定义的,所以你也必须解决这个问题(而且我不知道如何诚实)。
我认为我可以在那里看到一个基本的想法,我认为解决这个问题的最佳方法是全面列表理解(因为你似乎很了解它们) - 这是一个应该有效的版本: / p>
xs
正如您所看到的,我对此进行了一些更改 - 首先,如果它们可能是完美的,我会检查listX n = [ x | x <- [1..n], sum [ y | y <- [1..x-1], x `mod` y == 0] == x]
到x
的所有1
- 我这样做是通过总结全部来检查适当的除数并检查总和是否等于n
(x
部分的工作) - 如果你不知道这是有效的,因为你可以添加警卫列表推导(sum [...] == x
过滤掉sum [..] == x
的所有值,这是真的。)
为了使其更具可读性(并将问题分开),我建议以这样的方式编写:
x