轨道
/
Haskell
Haskell
/
练习
/
OCR 数字
OCR 数字

OCR 数字

中等

说明

给定一个 3 x 4 的网格,由竖线、下划线和空格组成,判断它表示的是哪个数字,或者是否已经无法辨认。

第一步

首先,把一个简单的二进制字体转换成只含 0 或 1 的字符串。

这种二进制字体使用竖线和下划线,高四行、宽三列。

     _   #
    | |  # zero.
    |_|  #
         # the fourth row is always blank

会转换成 "0"

         #
      |  # one.
      |  #
         # (blank fourth row)

会转换成 "1"

如果输入的大小正确,但无法辨认,程序应返回 '?'

如果输入的大小不正确,程序应返回一个错误。

第二步

修改程序,让它能够识别多字符的二进制字符串,并把无法辨认的数字替换为 ?。

第三步

修改程序,让它能够识别 0 到 9 的所有数字,无论是单独出现,还是作为更长字符串的一部分。

 _
 _|
|_

会转换成 "2"

      _  _     _  _  _  _  _  _  #
    | _| _||_||_ |_   ||_||_|| | # decimal numbers.
    ||_  _|  | _||_|  ||_| _||_| #
                                 # fourth line is always blank

会转换成 "1234567890"

第四步

修改程序,让它能够处理多个数字,每行一个。转换多行时,用逗号把这些行连接起来。

    _  _
  | _| _|
  ||_  _|

    _  _
|_||_ |_
  | _||_|

 _  _  _
  ||_||_|
  ||_| _|

会转换成 "123,456,789"。

通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Haskell Exercism

准备好开始 OCR 数字 了吗?

注册 Exercism,借助 107 个练习 和真人导师指导,学习并掌握 Haskell,全部免费。