パイプ、アンダースコア、スペースでできた3×4のグリッドが与えられます。このグリッドがどの数字を表しているのか、それとも読み取れない状態なのかを判定しましょう。
まずは、単純なバイナリフォントを、0または1を含む文字列に変換してみましょう。
バイナリフォントはパイプとアンダースコアを使い、高さ4行、幅3列です。
_ #
| | # zero.
|_| #
# the fourth row is always blank
これは"0"に変換されます。
#
| # one.
| #
# (blank fourth row)
これは"1"に変換されます。
入力のサイズが正しいのに数字として認識できない場合、プログラムは'?'を返す必要があります。
入力のサイズが正しくない場合、プログラムはエラーを返す必要があります。
複数文字のバイナリ文字列を認識できるようにプログラムを更新しましょう。読み取れない数字は?に置き換えます。
0から9までのすべての数字を、単独でも、より長い文字列の一部としても認識できるようにプログラムを更新しましょう。
_
_|
|_
これは"2"に変換されます。
_ _ _ _ _ _ _ _ #
| _| _||_||_ |_ ||_||_|| | # decimal numbers.
||_ _| | _||_| ||_| _||_| #
# fourth line is always blank
これは"1234567890"に変換されます。
1行につき1つずつ、複数の数字を扱えるようにプログラムを更新しましょう。複数の行を変換するときは、行をカンマで連結します。
_ _
| _| _|
||_ _|
_ _
|_||_ |_
| _||_|
_ _ _
||_||_|
||_| _|
これは"123,456,789"に変換されます。