失敗の記録です。
Egisonで数独にチャレンジしてみた。
まずヒント文字列を、1~9のCollectionのCollectionにパースする。
そしてパターンマッチ一発で解く。
3*3ブロックごとではなく、行ごとに分割する。
なので、matcherはlist(multiset(integer))
で良い。
match節で、ヒント合致と、各列/ブロックの和が45を課す。
(「和が45」というのは間違った制約かもしれないが、今はこれで行く。)
この素朴な実装では、
計算量が大きくなりすぎてうまくいかなかった。
個人の感想だが、
Egisonでは、コードは直感的に書けるのだが、
探索空間が大きくなりすぎて実質解けない、
という事がよく起こる。
Egisonは100年後の言語なのかもしれない。