我们尝试使用 Prolog 来解决这道数独问题。
已知可以填充的所有单词为:
dog, run, top, five, four, lost, mess, unit, baker, forum, green, super, prolog, vanish, wonder, yellow.
已知数独的填充格式如上图所示。
首先将已知输入到pl文件中:
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(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运行文件,输入求解:
?- solution(L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11,L12,L13,L14,L15,L16).
得到答案:
即:
关于Prolog安装与简单逻辑,见博客:https://blog.csdn.net/weixin_43098506/article/details/124411405