立体パズル買ってきて解けないからって

3日前くらいからカリカリやってたプログラムで解いた。ってかようやく解けた。
以下 SUPER KESHIQ 01 の解答例のネタバレあり


で、そのプログラムで出てきた解答例

 z = 0
  A A A K K
  H A E K J
  H A E K I
  H D D K I

 z = 1
  H C C L J
  H C L L J
  C C E L J
  D D E L I

 z = 2
  F F F F F
  B B B G J
  B B E G I
  D G G G I

Aを[0,0,0]に配置してるあたり解答の種類はまだまだいくらでもありそうだな。公式によると3940通りとあるけど。
計算にかかった時間はバックグラウンドでやってたからよくわからんが、ざっと十数分から二十分くらい。今回のケースでは探索のかなりはじめの方で解が出てきたあたり、まだまだ高速化の必要性があり、またその余地も十分にあるかな、というあたり。


余談だが-releaseオプションつけてコンパイルしたらコンパイラ(dmd168)が死んだ。なして?


追記

 z = 0
  A A A D D
  F A D D L
  F A D L L
  F B B B L
  F B B J L
  F H J J J
  H H I J I
  H E I I I
  H E E K K
  E E C G K
  C C C G K
  C G G G K

5*12*1もやってみた。
計算時間がざっと100分くらいで初めて見つかったのがこれ。細長い物体の場合1*1*1の空白があるかどうか判定する高速化が有効そうだ。まだ実装してないけど。