本文へスキップ
Ctrl+K

考えるコード ― 制約と最適化の冒険

Z3

  • 制約充足問題(CSP)― お弁当を食べ終わる順番を決めよう
  • Z3の使い方 ― 5つのステップで制約を解く
  • 少ない枚数で払う ― Optimize で最適化する
  • マインスイーパー ― 数字のヒントから安全なマスを推理する
  • 運動会の得点パズル ― 競技数が分からない問題を解く
  • 10個の質問パズル ― 自己参照クイズを Implies で解く
  • 24を作る ― 4つの数と演算子の組み合わせを探す
  • 演算子を入れて99を作る ― 括弧の付け方を Z3 に探させる
  • ナイトツアー ― すべてのマスを1回ずつ訪れるルートを探す
  • ナンバーリンク ― 数字のペアを線でつなぐ
  • 擬似乱数の予測 ― rand() のシードを Z3 で逆算する
  • グレーコード ― 1ビットずつ変化する数列を作る
  • CRC32を破る ― ハッシュ値から元のデータを作る
  • Z3 のデータ型 ― 式・型・関数宣言の関係を知る
  • Fixedpoint ― 再帰的なルールで到達可能性を解く

PySat

  • 数独をSATで解く ― 「ちょうど1つ」をCNFで表す
  • ノノグラムを解く ― 位置変数でCNFを小さくする
  • 四角に切れを解く ― マスと数字をブール変数で結ぶ

OrTools

  • CP-SATの紹介 ― SATの技術で解く制約プログラミング
  • CP-SATの基本API ― 制約を書くための道具一覧
  • ノノグラムを解く ― 開始位置を整数変数にする
  • 箱詰めパズル ― 12種類のペントミノを詰める
  • サーキット・ツアー制約 ― 1本のループで順番を決める
  • スリザーリンク ― 格子点の回路として解く
  • ましゅ(Masyu)― 丸の制約を辺で書く
  • Yin-Yangパズル ― 色の連結を整数の番号で表す
  • ナンバーリンク ― 数字のペアを回路でつなぐ
  • 巡回セールスマン問題 ― 距離が最小の回路を探す
  • Repository
  • Open issue

索引

著者 株式会社フォン

© Copyright 2024.