【发布时间】:2020-03-01 22:22:36
【问题描述】:
我刚开始使用 Haskell 进行函数式编程,我想编写一个简短的函数来检查 13 位代码并检查它是否是 ISBN 号。
检查公式为:
x13 = (10 − ((x1 + 3x2 +x3 + 3x4 +x5 + 3x6 +x7 + 3x8 +x9 + 3x10 +x11 + 3x12)%10))%10
(x1 是第一位,x2 第二位,...,x13 最后一位等等)
我希望输入是一个列表,这样对我来说更容易(13 个整数,每个 0-9)。
所以是这样的(下面的东西被简化了):
isValid :: [Int] -> Bool
--isValid = True if (lastdigit = formula) -- can this be done in one (long) line?
所以,例如:
isValid [ 9, 7, 8, 0, 1, 3, 7, 0, 5, 3, 4, 6, 9 ]
应该返回True
我已经尝试这样做了几个小时,但我在 Haskell 方面还不够好,这让我感到困惑。有人可以指出我正确的方向吗?我对 Haskell 了解不多,这是主要问题。
【问题讨论】: