ニコリの波及効果というパズルを整数計画で解く。
ために、大筋をメモっておく。
パズル的にも数独には似ているし解き方も似ている。
エリアの最大面積は8として
変数を設けて
x ( t, y, n) = 0 or 1
意味は「縦がt 横がyのマス目に入る数字がnだ」
n=1,2,3,4,5,6,7,8
①マス目一個に関して
x(t,y,1)+x(t,y,2)+x(t,y,3)+x(t,y,4)+x(t,y,5)+x(t,y,6)+x(t,y,7)+x(t,y,8)=1
②同エリアの1個の数字に関して
たとえば、面積4エリアの3に関しては
x(t0,y0,3)+x(t1,y1,3)+x(t2,y2,3)+x(t3,y3,3)=1
な感じ
③横へは
数字1に関しては
幅2のところに1が2個入るとアウト
x(t,y,1)+x(t,y+1,1)<=1
数字2に関しては
幅3のところに2が2個以上入るとアウト
x(t,y,2)+x(t,y+1,2)+x(t,y+1,2)<=1
以下同様
④縦は
横と同様
⑤表出文字は
縦t横yのマス目が3って表出しているなら
x(t,y,3)=1
条件式的なところは以上
////////////
「問題の入力がたいへんだ」とネット内の情報に書いてあった。
確かに、そう思う。
を使うとよい。
テキストで
①入力重視、半角で線ありなしを"*"と"."で入れる
とか
②全角でそのまま打ち出せば人がとけるようなのを入力にも使う
さらには、GUIを使うとよいかも。
エリア分けはプログラムで。
以上