prolog - prolog中的编码程序
问题描述
我目前正在prolog中编写一个编码程序。
首先我想把一个词切碎
例如:朋友应该是这样的:
[[F,R,I][R,I,E][I,E,N][E,N,D][N,D,S]]
目前我有这样的东西,但不明白为什么当我尝试一个词时程序不工作。
它总是回答错误。
couper([X1,X2,X3|L],[L1|ResQ]):-
L1 = [X1,X2,X3],
couper([X2,X3|L],ResQ).
couper([_,_|[]] , []).
couper([] , []).
couper([_|[]] , []).
解决方案
你也可以试试:
?- findall([A,B,C], append(_,[A,B,C|_],[f,r,i,e,n,d,s]), T).
T = [[f, r, i], [r, i, e], [i, e, n], [e, n, d], [n, d, s]].
作为一项规则:
couper(L, T) :-
findall([A,B,C], append(_, [A,B,C|_], L), T).
例子:
?- couper([f,r,i,e,n,d,s], T).
T = [[f, r, i], [r, i, e], [i, e, n], [e, n, d], [n, d, s]].
?- couper([e,x,a,m,p,l,e,s], T).
T = [[e, x, a], [x, a, m], [a, m, p], [m, p, l], [p, l, e], [l, e, s]].
?- couper([t,w,o], T).
T = [[t, w, o]].
?- couper([t,o], T).
T = [].
注意在 Prolog 中,大写字母是变量。因此,必须使用小写字母列表调用谓词(也许这是您的问题的原因)。
推荐阅读
- excel - Excel:如果单元格匹配,则使用来自 Sheet2 的信息填充 Sheet1?
- microsoft-teams - 当目标域与应用程序的网络服务相同时,是否可以进行链接展开?
- reactjs - 如何使用 React Redux 状态有条件地显示和禁用按钮
- android - 在单击按钮之前使屏幕不可单击
- python - 如何监控 CSV 文件的更改?
- javascript - 如何在节点 js 中使用 okhttp 库下载文件
- angular - CkEditor在Angular中构建后显示黑色三角形?
- javascript - 如何在java脚本中找出类的整个函数
- javascript - 带有回调函数的模拟节点模块
- neo4j - 密码:索引 returnInvalid input 'i':预期的空白注释,ON,'=',节点标签