11 | 4 | ||||
14 5 | 10 | ||||
17 | 3 | ||||
6 | 3 4 | ||||
10 | |||||
3 |
なお,以下ではパズルの盤面の一番上の行を第0行, 一番左の列を第0列として数えます.
(int x_1_2 1 9) ; 2行目3列目には1から9のいずれかの値が入る他の変数も同様に宣言します.
(= (+ x_2_1 x_3_1) 14) (= (+ x_1_2 x_1_3) 5)他の数字のマスについても同様にします.
(allDifferent x_2_1 x_2_2 x_2_3 x_2_4)他の白マスのつながりについても同様にします.
注意: Sugar version 1.13では,allDifferent ではなく alldifferent と小文字で書いてください.
s SATISFIABLE a x_1_2 2 a x_1_3 3 a x_2_1 9 a x_2_2 5 a x_2_3 1 a x_2_4 2 a x_3_1 5 a x_3_2 1 a x_3_4 3 a x_3_5 1 a x_4_2 3 a x_4_3 1 a x_4_4 4 a x_4_5 2 a x_5_3 2 a x_5_4 1 aSugarの次期リリースには, 問題ファイルを読み込んで 制約条件を記述したCSPファイルを作成するツールを含める予定です. 以下は,その実行例です.
$ ./kakuro.pl data/kakuro-0.txt >csp/kakuro-0.csp $ /usr/bin/time sugar csp/kakuro-0.csp >log/kakuro-0.log 0.64user 0.09system 0:00.72elapsed 101%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+160outputs (2major+8883minor)pagefaults 0swaps $ ./kakuro.pl -s log/kakuro-0.log data/kakuro-0.txt ; Kakuro Puzzle ; # http://www.nikoli.co.jp/en/puzzles/kakuro/ ; size 6 6 ; 0\0 0\0 11\0 4\0 0\0 0\0 ; 0\0 14\5 - - 10\0 0\0 ; 0\17 - - - - 3\0 ; 0\6 - - 3\4 - - ; 0\0 0\10 - - - - ; 0\0 0\0 0\3 - - 0\0 [ 0\ 0][ 0\ 0][11\ 0][ 4\ 0][ 0\ 0][ 0\ 0] [ 0\ 0][14\ 5] 2 3 [10\ 0][ 0\ 0] [ 0\17] 9 5 1 2 [ 3\ 0] [ 0\ 6] 5 1 [ 3\ 4] 3 1 [ 0\ 0][ 0\10] 3 1 4 2 [ 0\ 0][ 0\ 0][ 0\ 3] 2 1 [ 0\ 0] ; END