Prolog

あなたのスキルで飯は食えるか2

麻雀の手牌が入力として与えられたとき、「待ち」を出力するプログラムを書いてください。 1122335556799 : “99”をアタマの両面か“55”“99”のシャボであるので、(123)(123)(555)(99)[67]、(123)(123)(55)(567)[99]、(123)(123)(99)(567)[55]が正解です。 http…

あなたのスキルで飯は食えるか?

http://d.hatena.ne.jp/katona/20100422/p1 こっちに修正版を書きました 麻雀の手牌が入力として与えられたとき、「待ち」を出力するプログラムを書いてください。 1122335556799 : “99”をアタマの両面か“55”“99”のシャボであるので、(123)(123)(555)(99)[67…

順列

自分でチャレンジしてみたけど、書けなかったのでカンニング。 permutation(,). permutation(Xs,[Z|Zs]) :- select(Z,Xs,Ys), permutation(Ys,Zs). select(X,[X|Xs],Xs). select(Y,[X|Xs],[X|Ys]) :- select(Y,Xs,Ys). http://it.wikipedia.org/wiki/Prolog …

plus

swi-prologでplusという述語発見。isと違って逆演算が出来るのがいい。 ?- R is 2+3. R = 5 ?- 5 is 2+R. ERROR: Arguments are not sufficiently instantiated ?- plus(2,3,R). R = 5 ?- plus(2,R,5). R = 3 ?- plus(R,3,5). R = 2 ?- plus(X,Y,5). ERROR: …