RSS

 

RSS


SCIPで数独 その3

  • いわいまさか
  • at 2025/3/31 11:53:54


SUD-29-1946.jpg

表出数字を点対称にした。
解き心地は変わるかも。
まだ解いていない。

SCIP pyscipopt の使い方のためにやり始めたが、
全然関係なくなっちゃった。




SCIPで数独 手で解けたその2

  • いわいまさか
  • at 2025/3/31 06:32:38


SUD-30-5371.JPG

自分で自動生成した数独を手で解いた。

表出文字数が30なので
chatgptのなんとなく想定している数である。
そんな難易度。
前回は33。












画像置き場

  • いわいまさか
  • at 2025/3/30 18:51:07


画像置き場




SCIPで数独 手で解けた

  • いわいまさか
  • at 2025/3/30 16:36:13


そういえば自分で作った問題を自分で解いたの初。

解けたというのは手で解けた。

間違えないように簡易的に名前を付けた。
数字の個数と出だし数字4つ。

解き心地をどうこうする作り方になってないのでね。
また、表出文字を対称にするとかもやってない。
それからSCIPを使ったのも関係ない。

普段デイサービスでもらってるものよりも手強いような。





SCIPで数独を作る

  • いわいまさか
  • at 2025/3/28 14:44:45


SCIPで数独を解く。
chatgpt  がサッと作ってくれる。

SCIPで数独を作る。
chatgpt  がサッと作ってくれる。
が、別解チェックをやってない。
別解チェックをやらせようとすると
chatgpt  が何やら作ってくれようとするが、怪しい。

1番目の解はなしね
他はあるかな?
とすればいいわけで。

LP問題文にこの行を追加する。
00に9
01に6
02に2
.......
80以下ならいい

c355: +1 x_0_0_9 +1 x_0_1_6 +1 x_0_2_2 +1 x_0_3_8 +1 x_0_4_1 +1 x_0_5_3 +1 x_0_6_7 +1 x_0_7_5 +1 x_0_8_4
  +1 x_1_0_8 +1 x_1_1_5 +1 x_1_2_3 +1 x_1_3_4 +1 x_1_4_7 +1 x_1_5_6 +1 x_1_6_1 +1 x_1_7_9 +1 x_1_8_2 +1 x_2_0_4
  +1 x_2_1_1 +1 x_2_2_7 +1 x_2_3_5 +1 x_2_4_2 +1 x_2_5_9 +1 x_2_6_8 +1 x_2_7_6 +1 x_2_8_3 +1 x_3_0_2 +1 x_3_1_4
  +1 x_3_2_6 +1 x_3_3_1 +1 x_3_4_5 +1 x_3_5_8 +1 x_3_6_9 +1 x_3_7_3 +1 x_3_8_7 +1 x_4_0_7 +1 x_4_1_3 +1 x_4_2_8
  +1 x_4_3_2 +1 x_4_4_9 +1 x_4_5_4 +1 x_4_6_5 +1 x_4_7_1 +1 x_4_8_6 +1 x_5_0_1 +1 x_5_1_9 +1 x_5_2_5 +1 x_5_3_6
  +1 x_5_4_3 +1 x_5_5_7 +1 x_5_6_2 +1 x_5_7_4 +1 x_5_8_8 +1 x_6_0_3 +1 x_6_1_2 +1 x_6_2_9 +1 x_6_3_7 +1 x_6_4_6
  +1 x_6_5_1 +1 x_6_6_4 +1 x_6_7_8 +1 x_6_8_5 +1 x_7_0_5 +1 x_7_1_8 +1 x_7_2_1 +1 x_7_3_3 +1 x_7_4_4 +1 x_7_5_2
  +1 x_7_6_6 +1 x_7_7_7 +1 x_7_8_9 +1 x_8_0_6 +1 x_8_1_7 +1 x_8_2_4 +1 x_8_3_9 +1 x_8_4_8 +1 x_8_5_5 +1 x_8_6_3
  +1 x_8_7_2 +1 x_8_8_1 <= +80

PySCIPOpt でいえば

    # 前の解を入れる   <= 81 - 1
    if sol != None:
        #print("封じ")
        model.addCons(
           sum(x[i, j, sol[i][j]] for i in range(9) for j in range(9)) <= 80
        )
こうなる
そうやって解いていって別解がないときを見つければいい。




記事一覧へ