《スリザーリンク自動解答アルゴリズム》

スリザーリンク自動解答Javaアプレット

サイズ入力欄(小さいテキストボックス)にサイズを入れて、「Clear」ボタンを押すと、フィールドを指定したサイズで初期化します。

フィールドのマスをクリックしてキーボードの0〜3の数字を押すと、そのマスに数字が入ります。解答を表示するには、「>」「>>」「>>>」のボタンを押します。それぞれのボタンの意味は以下の通りです。

「>」局所的に決定できるところだけ、1段階だけ解きます。
「>>」局所的に決定できるところは全て解き、それがない場合は大域的に判断して1箇所だけ解きます。
「>>>」決定できるところを全て解きます。

局所的に決定できるところに対し、自動的にどのような操作をするか選択できます。各項目の意味は以下の通りです。

「None」何もしません。
「Show」局所的に決定できるところを表示します。表示された場所をShiftキーを押しながらクリックすると、その部分を解きます。
「Solve」局所的に決定できるところは、自動的に全て解きます。

「Save」ボタンを押すと、入力したマスの数字のデータをデータ入力欄(大きいテキストエリア)に出力します。このデータとフィールドのサイズを別のところに保存しておけば、同じフィールドを再現できます。再現するときは、サイズ入力欄とデータ入力欄に保存したデータを入れ、「Clear」ボタンを押します。

仮定による解答決定はしていないので、完全に解けない場合があります。スケーラビリティを考慮していないので、あまり大きいフィールドにはしない方が無難です。

ソースを暫定的に公開します。説明がないと分かりづらいソースですが、先にソースだけ公開します。

サンプルデータ:
縦:11、横:11

-3-0-1-2-3-
3--2-2-2--1
--1--2--3--
21---1---32
-----1-----
23013-32032
-----3-----
32---2---23
--3--2--3--
3--0-3-0--3
-1-1-1-3-2-
jarファイルをダウンロードできます。

SlitherLink.jar



市岡 耕平