例子来自:Prolog是如何回答问题的
-
请看下图:
我们的目的是要在上面表格中白色的方格(带有LXX标识的方格)里面填上英文单词,可供选择的单词有:
word(d,o,g). word(r,u,n). word(t,o,p). word(f,i,v,e). word(f,o,u,r). word(l,o,s,t). word(m,e,s,s). word(u,n,i,t). word(b,a,k,e,r).
word(f,o,r,u,m). word(g,r,e,e,n). word(s,u,p,e,r). word(p,r,o,l,o,g). word(v,a,n,i,s,h). word(w,o,n,d,e,r). word(y,e,l,l,o,w).
试着写出一个规则solution.
solution(L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11,L12,L13,L14,L15,L16).
分析:单词1和单词3共享字母“L1”,单词4和单词1共享字母“L3”,单词4和单词2共享字母“L12”,依次类推,我们可以把所有的约束都写出来。这样,我们就告诉Prolog系统最后的答案长得什么样
应该这么写:
solution(L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11,L12,L13,L14,L15,L16):- word(L1,L2,L3,L4,L5), #单词一 word(L9,L10,L11,L12,L13,L14), #单词二 word(L1,L6,L9,L15), #单词三 word(L3,L7,L11), #单词四 word(L5,L8,L13,L16). #单词五
写prolog文件word.pl的代码:
运行结果:
即 1 forum;2 vanish ;3 five;4 run;5 mess ;