OCR数字

OCR数字

中級

説明

パイプ、アンダースコア、スペースでできた3×4のグリッドが与えられます。このグリッドがどの数字を表しているのか、それとも読み取れない状態なのかを判定しましょう。

ステップ1

まずは、単純なバイナリフォントを、0または1を含む文字列に変換してみましょう。

バイナリフォントはパイプとアンダースコアを使い、高さ4行、幅3列です。

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

これは"0"に変換されます。

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

これは"1"に変換されます。

入力のサイズが正しいのに数字として認識できない場合、プログラムは'?'を返す必要があります。

入力のサイズが正しくない場合、プログラムはエラーを返す必要があります。

ステップ2

複数文字のバイナリ文字列を認識できるようにプログラムを更新しましょう。読み取れない数字は?に置き換えます。

ステップ3

0から9までのすべての数字を、単独でも、より長い文字列の一部としても認識できるようにプログラムを更新しましょう。

 _
 _|
|_

これは"2"に変換されます。

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

これは"1234567890"に変換されます。

ステップ4

1行につき1つずつ、複数の数字を扱えるようにプログラムを更新しましょう。複数の行を変換するときは、行をカンマで連結します。

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

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

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

これは"123,456,789"に変換されます。

GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Haskell Exercism

OCR数字を始める準備はできましたか?

Exercismに登録すれば、107個の演習、そして本物の人間によるメンタリングとともに、Haskellを学んでマスターできます。すべて無料です。