- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在完成 chapter 12 of Real World Haskell .在本章中,作者解释了如何使用 EAN13 encoding 执行条码识别。 .
我从 the book snippets into my repo 复制了大部分代码当我终于到达检查我的 300 多行代码是否按预期工作时,我得到了一个坏消息:
-- Finding the Correct Sequence
*Main> let input = zip (runLengths $ encodeEAN13 "9780132114677") (cycle [Zero, One])
*Main> listToMaybe . solve . candidateDigits $ input
Just [0,2,0,1,0,0,0,0,0,0,0,0,1] -- WRONG Actual
Just [9,7,8,0,1,3,2,1,1,4,6,7,7] -- Expected
自本书出版以来,我注意到一些类型签名发生了变化,例如:
$ ghci
GHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for help
Prelude> import qualified Data.Map as M
Prelude M> :t M.lookup
M.lookup :: Ord k => k -> M.Map k a -> Maybe a
-- in the book: M.lookup :: (Ord k, Monad m) => k -> M.Map k a -> m a
我尝试在 GHCi 中重现每个示例,除了最后一个示例,我总是得到与书中相同的结果。
有人从这本书中讨论过这个主题吗?
作者并没有解释每一行代码,特别是 input
变量没有在任何地方定义 let input = zip (runLengths $ encodeEAN13 "9780132114677") (cycle [零,一])
一些 EAN13 编码的条码用于测试?
万一没人知道这本书,你能给我一些EAN13编码条码的样本吗,比如:
*Main M> encodeEAN13 "9780132114677"
"101011101100010010100111001100101000010101011011001100110110011010111001010000100010010001001010000101"
为了确保我对功能的测试是正确的?
非常感谢您
最佳答案
您的实现中有两个错误:
首先,在 encodeDigits
中,您编写了 splitAt 5
,而它应该是 splitAt 6
。这修复了@Brian Anderson 指出的编码错误。
其次,在 bestScores
中,您编写了:
[(distance d (scaleToOne ps), n) | d <- srl, n <- digits]
什么时候你应该写:
zip [distance d (scaleToOne ps) | d <- srl] digits
这修复了你的解码错误。
我希望我可以说我用我超人的调试技巧找到了这些错误,但我刚好有自己的 Barcode.hs
副本,那是几年前我自己完成第 12 章时的以前。
关于haskell - Haskell 中的 EAN13 条码编码 : How to test it?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46825859/
我是一名优秀的程序员,十分优秀!