親友のMartaは、最近、地元の歴史博物館のコレクションを扱う念願の仕事に就きました。 プログラミングに興味があることを知っているMartaは、コンピューティングの歴史に関する今度の展覧会に向けて、職場で困っていることを打ち明けてきました。 地元の大学の数学科が歴史的なプリントアウトを何箱か寄贈してくれたのですが、資料の状態が良くないため、そのテキストをデジタル化することになったのです。 ただ、大学の古いプリンターにはテキストの表現方法にちょっとした癖があり、データをうまく取り出すには助けが要りそうです。
Optical Character Recognition(OCR)は、文字の画像を機械が読み取れるテキストに変換するソフトウェアです。
数字を表す文字のグリッドが与えられたら、そのグリッドを数字の文字列に変換します。
グリッドに複数の行のセルがある場合は、出力ではそれぞれの行を","で区切ります。
"|")、アンダースコア("_")、スペース(" ")を使って描きます。"?"を出力する必要があります。次の入力(コメントを除く)は"1234567890"に変換されます。
_ _ _ _ _ _ _ _ #
| _| _||_||_ |_ ||_||_|| | # Decimal numbers.
||_ _| | _||_| ||_| _||_| #
# The fourth line is always blank,
次の入力は"123,456,789"に変換されます。
_ _
| _| _|
||_ _|
_ _
|_||_ |_
| _||_|
_ _ _
||_||_|
||_| _|
グリッドはヌル終端された文字列として表され、各行の末尾には改行文字が入ります。
| Register | Usage | Type | Description |
|---|---|---|---|
$a0 |
入力 | アドレス | ヌル終端された入力文字列 |
$a1 |
入出力 | アドレス | ヌル終端された結果文字列。グリッドの次元が無効な場合は空 |
$v0 |
出力 | 整数 | グリッドの状態(0 = ok、-1 = invalid columns、-2 = invalid rows) |
$t0-9 |
一時 | 任意 | 一時的な保存用 |