Egisonでも出来たので報告します。
第一段階
関数fifteen
で、1..9
のうち、和が15になる三数を選びます。
第二段階
関数fifTriple
で、fifteen
から、任意の三要素({{1 5 9} {1 6 8} {2 4 9}}
とか)の組み合わせを得ます。
第三段階
関数makeMagic
で、fifTriple
のから、縦と斜めの和が15になるものをパターンマッチします。
数字が重複するものもはじきます。
実行に15分ぐらいかかります。
メモリも3GBぐらい食います。
Haskellと同様に、解は8個出力されます。
19/03/21追記
3つconsするmatcherを作って、書き直しました。
実行時間8分、消費メモリ250MBまで削減できました。
これは、matcherの効果というよりも、fifteen
をunique/m
で絞ったのが大きいです。
.
.