prolog

swi-prologに.proの拡張子を読み込ませ、述語mainを自動実行させる

コマンドラインでは .proを読んでもらえないので -sオプションをつけてファイルを指定。 qオプションでメッセージを抑制、tオプションで実行する述語を指定。 $ cat test2.pro main :- time((permutation([1, 2, 3, 4, 5, 6, 7, 8, 9], [A, B, C, D, E, F, G…

cygwin環境下のemacs22でswi-prologに.proを関連づけしC-cC-lで述語mainを実行するようにする

あとprologモードはswiplを探すらしいのだがplを指定してやる。 (setq auto-mode-alist (append '(("\\.pro" . prolog-mode)) auto-mode-alist)) (setq prolog-program-name "pl")plが探せないみたいなので.bashrcに以下を追加 PATH=/lib/pl-5.6.36/bin/i686…

すごいぞprolog!魔方陣がワンライナーでかける!(swi-prologで魔方陣を計算その2)

prologはこれがワンライナーでかけるのか。すごすぎる。しかも2秒。あり得ない。 ?- time((permutation([1, 2, 3, 4, 5, 6, 7, 8, 9], [A, B, C, D, E, F, G, H, I]),X is A+B+C,X is D+E+F,X is G+H+I,X is A+D+G,X is B+E+H,X is C+F+I,X is A+E+I,X is C…

swi-prologで魔方陣を計算する

もらいもの。 prologってこういうのは美しくかけるんだな。 magic_square(L):-magic_square([1,2,3,4,5,6,7,8,9],L). magic_square(Elements,[A,B,C,D,E,F,G,H,I]):- permutation(Elements,[A,B,C,D,E,F,G,H,I]), sumlist([A,B,C],15), sumlist([D,E,F],15),…