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,全部免費。