数独コード改善ちょっとはSCIP
数独コード改善しようと思ったらchatgptがウソついてた。
別解がないと知るにはSCIPは2回必要なのだ。
だが、SCIP2回目やるときmodelを作り直す必要はなかった。
# 変換解除(原問題に戻す)→ 追加制約できる状態に
model.freeTransform()
が使えた。
何だか、難しいが。
あなたのコードでは一意解判定の際に、
-
最初に1つ目の解を求める(optimize()
で内部状態が変換済みに)
-
元のモデルに戻すために freeTransform()
を呼ぶ
-
1つ目の解を禁止する制約(nogood制約)を追加
-
もう一度 optimize()
を実行し、別解があるか判定する
こうしないと、2回目の探索用の制約を追加できません。
だそうだ。
最初からやり直すよりいい。学んだ。