Macr055でNクイーン
前回の4クイーンを元に一般化して「マクロを生成するマクロ」によるNクイーン問題( http://parametron.blogspot.jp/2015/04/christopher-stracheygpm.html )。
エスケープが妖しいことになってて、もしかしたら無駄な展開とか起きてるかもしれませんが、一応ちゃんと動いて、正しい結果は出ています。
リスト中では N = 8 を定義してエイトクイーンになっていますが、macr055 は awk で実装しているうえに効率とか考えていないので流石に遅く、手元の環境で実行し(他の作業もしていましたので安定したものではないですが)time で確認したところ3時間ちょっとかかりました。
{m55_define|1+|`{1|2|3|4|5|6|7|8|9|10| {m55_define|1|$$$1}}'}{m55_dnl} {m55_define|1-|`{-1|0|1|2|3|4|5|6|7|8| {m55_define|-1|$$$1}}'}{m55_dnl} {m55_define|-|`{$2| {m55_define|$2|`{-|{1-|$1}|{1-|$2}}'} {m55_define|0|$1}}'}{m55_dnl} {m55_define|lt|`{$1| {m55_define|$1|`{p|$1|$2| {m55_define|p|`{lt|{1-|$1}|$2}'}}'} {m55_define|-1|t} {m55_define|$2|f}}'}{m55_dnl} {m55_define|or|`{$1| {m55_define|$1|t} {m55_define|f|$2}}'}{m55_dnl} {m55_define|?|`{{lt|$1|$2}| {m55_define|t|`{{-|$2|$1}| {m55_define|{-|$2|$1}|f} {m55_define|$3|t}}'} {m55_define|f|`{{-|$1|$2}| {m55_define|{-|$1|$2}|f} {m55_define|$3|t}}'}}'}{m55_dnl} {m55_define|gen1|`{$1| {m55_define|$1|``|$$$$$1'{gen1|{1+|$1}|$2}'} {m55_define|{1+|{1+|$2}}}}'}{m55_dnl} {m55_define|gen2|`{$1| {m55_define|$1|````|$$$$$1'''{gen2|{1+|$1}|$2}'} {m55_define|{1+|{1+|{1+|$2}}}}}'}{m55_dnl} {m55_define|gen3|`{$2| {m55_define|$2|```{or|{?|$$$$$1|$$$$1|0}|{or|{?|$$$$$1|$$$$1|$2}|''{gen3|{1+|$1}|{1-|$2}}'```}}'''} {m55_define|1|```{or|{?|$$$$$1|$$$$1|0}|{?|$$$$$1|$$$$1|1}}'''}}'}{m55_dnl} {m55_define|gen4|`{$1| {m55_define|$1|````|$$$$$1'''{gen4|{1+|$1}|$2}'} {m55_define|{1+|{1+|$2}}|````|$$$$1|$$$$$1''''}}'}{m55_dnl} {m55_define|gen_q|`{$1| {m55_define|$1|`{m55_define|q$1|`{qq$1|0'{gen1|1|$1}`}'}{m55_dnl} {m55_define|qq$1|`{$$$$1| {m55_define|$$$$1|`{''{gen3|2|$1}``| {m55_define|f|`{q{1+|$1}'''{gen4|2|$1}```}{qq$1|{1+|$$$$1}'''{gen2|2|$1}```}'} {m55_define|t|`{qq$1|{1+|$$$$1}'''{gen2|2|$1}```}'}}'} {m55_define|$$$$'{1+|{1+|$1}}`|}}'}{gen_q|{1-|$1}}{m55_dnl}'} {m55_define|0}}'}{m55_dnl} {m55_dnl} {m55_define|N|8}{m55_dnl} {m55_dnl} {m55_define|gen5|`{m55_define|q$1|{gen6|1|$1}}'}{m55_dnl} {m55_define|gen6|`{$1| {m55_define|$1|``$$$$$1 '{gen6|{1+|$1}|$2}'} {m55_define|$2|``$$$$$1 ''}}'}{m55_dnl} {gen5|{N}}{m55_dnl} {gen_q|{1-|{N}}}{m55_dnl} {m55_define|q0|`{qq0|0|$1}'}{m55_dnl} {m55_define|qq0|`{$1| {m55_define|$1|`{q1|$1|$2}{qq0|{1+|$1}|$2}'} {m55_define|$2|}}'}{m55_dnl} {q0|{N}}{m55_dnl}