RSS

 

RSS


パズル


ツインスネークSCIP その1

  • いわいまさか
  • at 2020/10/10 16:00:00

パズル懇話会メンバーの三好潤一のツインスネークの投稿がこれ

ジャンルで言えばぺンシルパズル。
マス目上を一筆書きのようにつなげて8個で蛇1匹。
ナナメなしで上下左右に。
蛇2匹を作って、のってる数字を順番を含めて同じにしてね。というルール。

これをプログラムで解いてみようということで。
SCIPは整数計画ソルバー。
SCIPは整数の等式や不等式を立てると解いてくれる。

立てていく。まず、名前をつける。
蛇Aがパーツ8個で構成されていて a0,a1,a2,a3,a4,a5,a6,a7
蛇Bがb0,b1,b2,b3,b4,b5,b6,b7
マス目を表すのにxy座標的に
c00 c01 c02 c03
c10 c11 c12 c13
c20 c21 c22 c23
c30 c31 c32 c33
マス目表出数字が n1 n2 n3 上の問題には表れないが n4 n5

用意する変数は
変数①c12_n 表出数字変数
 c12マス目の表出数字がいくつかを表す変数
 c12の上の数字が1なら
 c12=1
 同様の変数をマス目分=16個、用意する。  

変数②c12_n2 表出数字バイナリ変数
  c12マス目の表出数字が2かどうかを表す変数。
  0:c12は2じゃない
  1:c12は2だ
  同様の変数をマス目×数字5択=16×5=80個用意。
  上記①と内容が重複しているが、「論理をごにょごにょする」ときは②があった方がやりやすい場合あり。
 ※バイナリはここでは0 or 1の2値であることを表している。

変数③a0_c12 蛇パーツとマス目対応バイナリ変数
  蛇のパーツのa0がマス目c12に乗っているかどうかを表す変数。
  a0_c12=0 で乗ってない a0_c12=1で乗っている
  同様な変数を全パーツ、全マス目で用意すると
  16×16=256個。
  この256個の変数の0、1を決めて行くと答えが出るという流れ。

変数④a1_b1_n 蛇パーツの持つ数字は何か変数
蛇Aのパーツa1や蛇Bのパーツb1に対応する数字が何かを表しま
す。全部で8個。

変数を全部、掲載しようとしたが、いっぱいあってめんどくさいので、また、次回回し、先に立式の方を説明するかも。


  • コメント (0)
  • トラックバック (0)
トラックバックURL :
http://www.iwai-masaka.jp/tb.cgi/56505