※現在、ブログ記事を移行中のため一部表示が崩れる場合がございます。
順次修正対応にあたっておりますので何卒ご了承いただけますよう、お願い致します。
S E N D + M O R E ------------------ M O N E Y 文字には0〜9の数字を入れます。 同じ文字には同じ数字、異なる文字には異なる数字を入れます。 また、最上位桁の文字には、0は入りません。
各英大文字には、0〜9の数字が入る。さて、これをどうやって解こうか。
同じ英大文字は同じ数字になり、異なる英大文字は異なる数字となる。
最上位桁の数字は0にはならない。
my $version = "v2-3-2";
my $java = "java";
my $jar = "/usr/local/lib/sugar/sugar-$version.jar";
## my $solver0 = "glucose";
my $solver0 = "/usr/local/bin/minisat";
my $solver0_inc = "minisat-inc";
my $tmp = "/tmp/sugar$$";
インストールが済んだら、とりあえず動かしてみよう。
examples$ sugar nqueens-8.csp s SATISFIABLE a q_1 4 a q_2 2 a q_3 8 a q_4 6 a q_5 1 a q_6 3 a q_7 5 a q_8 7 aこれは8クィーンで、8x8のチェス盤上に、どのクィーンも他のクィーンに取られない(利き筋にない)ように置く配置を求める問題である。 答えは、各列の何マス目に置けば良いかを示している。
; 8-Queens Problem
(int q_1 1 8)
(int q_2 1 8)
(int q_3 1 8)
(int q_4 1 8)
(int q_5 1 8)
(int q_6 1 8)
(int q_7 1 8)
(int q_8 1 8)
(alldifferent q_1 q_2 q_3 q_4 q_5 q_6 q_7 q_8)
(alldifferent (+ q_1 1) (+ q_2 2) (+ q_3 3) (+ q_4 4) (+ q_5 5) (+ q_6 6) (+ q_7 7) (+ q_8 8))
(alldifferent (- q_1 1) (- q_2 2) (- q_3 3) (- q_4 4) (- q_5 5) (- q_6 6) (- q_7 7) (- q_8 8))
; END
あ、長くなったので、SEND+MORE=MONEYを解くsugarのプログラムは次回に説明しよう。