←Topに戻る
←戻る
進む→


入力ファイルの書式

入力ファイルは、以下のルールに従ってカックロの盤面をテキストで表示したものとなります。

  1. 行のはじめ、終わりと各列の区切りには"|"を使う。
  2. 数字の入るマスには、一つ以上のスペースを入れる。
  3. ヒントの入るマスは、「下へのヒント」「カンマ」「右へのヒント」の順に数字を並べる。
  4. ヒントマスで、ヒントの入らないところには一つ以上の"*"を入れる。

このとき、注意しなければいけないのはヒントマスにスペースは使えないということです。ですから、ヒントが一桁の数字の場合、上下とそろえるために
|*2,**|
と書きたいのですが、
|2,***|もしくは|02,**|
と書かなくてはいけません。

以上のルールに従ってこの盤面を入力ファイル形式に直すと、下のようになります。

日本文芸社刊 パズルポシェットシリーズ 足し算クロスA/大屋徳敬 より
No.15、レベル★★(最低)です。
|**,**|14,*|23,*|**,**|29,**|34,**|**,**|38,**|23,**|4,**|
|**,11|    |    |**,06|     |     |***,8|     |     |    |
|***,4|    |    |05,17|     |     |**,19|     |     |    |
|**,16|    |    |     |     |     |***,7|     |     |6,**|
|**,34|    |    |     |     |     |41,11|     |     |    |
|**,**|11,*|22,*|38,22|     |     |     |     |     |    |
|**,29|    |    |     |     |18,26|     |     |     |    |
|**,21|    |    |     |     |     |     |11,**|13,**|11,*|
|**,12|    |    |     |**,35|     |     |     |     |    |
|**,**|08,6|    |     |**,17|     |     |     |     |    |
|**,19|    |    |     |***,9|     |     |**,06|     |    |
|**,06|    |    |     |***,5|     |     |**,03|     |    |

これを見ればわかるように、一桁の数字が出てくるところ以外は自然に縦をそろえて書くことができます。別に縦にそろえる必要も、実はありません。ただ間違いを探すときなどに見やすいからそうしているだけです。左から2列目や3列目が4マス取りになっているのも、|14,**|と5マス取りで書きなおせます。また、一桁の数字も十の位に0を書けば縦にそろえられるのですが、いろいろな書き方の例を見せるためもあって、|***,4|などという書き方も採用しました。

本当はヒントの区切りにバックスラッシュを使いたかったのですがうちの環境がWindowsなので、バックスラッシュは全角文字でしか存在しないためにあきらめてカンマにしました。

最後に、今回デバッグに使用した入力ファイルをあげておきます。

bt1.txt
bt2.txt
bt3.txt
nobt.txt
no30.txt
no79.txt

上の三つは、バックトラックと全解探索の確認のために作ったもので、nobt.txtは前出の「足し算クロスA」という本の、ルール説明用の小さい盤面です。これを使っていたらなんとバックトラックに入らずに解けてしまうようになったため、あわててバックトラックの実践用に作ったのがno79.txt、本の一番最後に載っていたレベル★★★★★(最難)の問題です。そして、いつまでもこの問題が解けないために難しすぎて時間がかかるんだなと判断して、もう少し簡単なものをと作ったのがno30.txtです。レベル★★★ですが、プログラムが完成してみたら、解くのにかかる時間はほとんどno70と変わりませんでした。

←Topに戻る
←戻る
進む→