list - 输出似乎只测试列表中最后一个的差异函数
问题描述
链接到旧问题:检查连续元素之间的差异是否相同
我已经在另一个问题帖子中发布了我的进度,但这是我的代码我试图在 Prolog 中解决的问题。我希望我的函数返回 sameSeqDiffs([3,5,7],2) 的结果,具体取决于每个数字之间的差异是否与我的最后一个参数相同。到目前为止,这是我的想法:
sameSeqDiffs([X,Y], Result):-
A is Y - X,
A = Result.
sameSeqDiffs([X,Y,Z|T], Result):-
sameSeqDiffs([Y,Z|T], Result).
当我测试这段代码时,它似乎适用于某些输入,但显然不适用于其他输入:
解决方案
您的解决方案存在一些问题:
sameSeqDiffs([X,Y,Z|T], Result):-
sameSeqDiffs([Y,Z|T], Result).
在这里,您完全忽略了变量 X 和差异 XY。
sameSeqDiffs([X,Y], Result):-
Result is Y - X.
sameSeqDiffs([X,Y,Z|T], Result):-
Result is Y - X,
sameSeqDiffs([Y,Z|T], Result).
推荐阅读
- django - Django从模板的多个视图中调用相同的视图
- javascript - react-test-library 渲染一个在测试中声明的功能组件
- java - 是否可以使用 clon() 方法而不覆盖它
- javascript - Javascript:使用嵌套 for 循环比较嵌套数组中的元素
- visual-studio-code - VSCode 嵌套片段(或在另一个片段中包含一个片段)
- r - 缩放 x 和 y 轴 (geom_bar)
- c++ - 叉子/管道并运行多个程序
- javascript - 有条件地运行 it() 块或在 Webdriver.io 中嵌套 it() 块
- node.js - 在访问 Google Cloud Storage 的 Google Cloud Functions 中,节点 6 的运行速度明显快于节点 8
- java - 尝试在空对象引用上调用虚拟方法 'org.json.JSONArray org.json.JSONObject.getJSONArray(java.lang.String)'