提案されたクロスワードグリッドを検証します。
エントリは、提案されたグリッドを単純にテストして、クロスワードソルバーを満足させるための一連の条件を満たすかどうかを判断する完全なプログラムである必要があります。
入力
入力は、クロスワードグリッドを表すファイルの名前になります。入力ファイル名は、引数として、標準入力で、またはハードコーディング以外の従来の手段で渡すことができます。
グリッドファイル形式:最初の行は、空白で区切られた2つの整数定数MとNで構成され[#A-Z ]
ます。その行の後には、から選択されたN文字(および新しい行)で構成されるM行があります。これらの文字は'#'
、ブロックされた四角、' '
内容が不明なパズルの開いた四角、およびその文字を含む開いた四角を示すように解釈されます。
出力
プログラムは有効なグリッドに出力を生成せず、通常の終了状態で終了します。提案されたグリッドが失敗した場合、実行環境でサポートされていれば、プログラムは診断エラーメッセージを生成し、異常終了状態(UNIXでは0ではない)で終了します。エラーメッセージには、違反している有効性の条件と違反している正方形の場所の両方が示されているはずです。これらの事実を伝える手段を自由に選択できます。
妥当性の条件
有効なグリッドには、1文字の長さ(最小長を入力パラメーターにするための追加のクレジット)の回答(横または下)がなく、通常の対称性を示します。通常の対称性は、クロスワードが後も同じままであることを意味します(同じ操作の3つの同等の説明)。
- それ自身の中心を通した反射
- 垂直方向と水平方向の両方の反射
- 180度回転
テスト入力と期待される出力
パス:
5 5
# ##
#
#
#
## #
短い答えに失敗します:
5 5
## ##
#
#
#
## ##
対称性に失敗:
5 5
# ##
#
#
# #
## #
さておき
これは、クロスワードに関連するいくつかの課題の2番目です。私は一貫して一貫したファイル形式のセットを使用し、その過程でクロスワード関連ユーティリティの立派なスイートを構築する予定です。たとえば、後続のパズルでは、このパズルの入力と出力に基づいてクロスワードのASCIIバージョンを印刷する必要があります。
このシリーズの以前の課題: