クロスワードグリッドに正しく番号を付けるプログラムを作成します。
入力
入力は、クロスワードグリッドを表すファイルの名前になります。入力ファイル名は、引数として、標準入力で、またはハードコーディング以外の従来の方法で渡すことができます。
グリッドファイル形式:テキストファイル。1行目は、空白で区切られた2つの整数定数M
とで構成されていN
ます。その行に続くのは、M
それぞれからN
選択された文字(および新しい行)で構成される行[#A-Z ]
です。これらの文字は'#'
、ブロックされた四角形、' '
既知のコンテンツのないパズル内の開いた四角形、およびその文字を含む開いた四角形を示すように解釈されます。
出力
出力は番号付けファイルになり、標準出力、入力ファイル名から派生した名前のファイル、ユーザー指定のファイル、または他の従来の宛先に送信できます。
ナンバリングファイルフォーマットテキストファイル。「#」で始まる行は無視され、コメントに使用できます。他のすべての行はタブ区切りトリプレット含むi
、m
、数がグリッド上に印刷されるべきであり、そしてそれが印刷されるべきである正方形の行と列を表しています。行と列の両方の数は1から始まります。n
i
m
n
採番スキーマ
正しい番号のグリッドには、次のプロパティがあります。
- 番号は1から始まります。
- 開いている正方形の列またはスパンには番号が付けられていません。(問題には1文字の回答が存在しないと考えるかもしれません。)
- 番号は、各行を左から右に取って、上から下にスキャンすることにより、カウント順に発生します。(したがって、すべての水平スパンには左端の正方形から番号が付けられ、すべての列には一番上の正方形から番号が付けられます。)
テスト入力と期待される出力
入力:
5 5
# ##
#
#
#
## #
出力(コメント行を無視):
1 1 2
2 1 3
3 2 2
4 2 4
5 2 5
6 3 1
7 3 4
8 4 1
9 4 3
10 5 3
さておき
これは、いくつかのクロスワード関連の課題になると期待される最初のものです。私は一貫して一連のファイル形式を使用し、その過程でクロスワード関連ユーティリティの立派なスイートを構築する予定です。たとえば、後続のパズルでは、このパズルの入力と出力に基づいてクロスワードのASCIIバージョンを印刷する必要があります。
'\n'
、すべてのプラットフォームでcのように表されます。入力ファイルは、それを処理するのと同じシステムで作成されたと想定されているため、この問題は透過的です。コードゴルフについての一般的な注意:奇妙な言語や奇妙なプラットフォームで作業している場合は、読者を驚かせるかもしれないことをメモしてください。人々はあなたの提出物を判断する際にそれを考慮に入れます。