问题标签 [failure-slice]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
prolog - 如何使用 dif/2 防止生成序列中的重复?
这个问题是在回答StackOverflow上的另一个问题时出现的,该问题是(概括一点)生成由有限元素集形成的所有序列,没有重复出现。
正如鲍里斯在评论中正确指出的那样,这个问题有许多现有的解决方案。但是,我对不使用累加器(即,与新选择的元素进行比较的已选择元素的列表)但使用dif/2
语句的解决方案感兴趣。
为了说明,在我的以下程序中,我有 4 个元素,并且在 4 次递归调用之后,有几个div/2
语句声明到目前为止已经选择的 4 个元素是成对不同的。由此可以推断,继续递归并寻找第五个元素是没有意义的,因为给定的div/2
语句已经没有元素了。有没有办法将这些“知识”编码到程序中,使其不再循环?
当前的循环行为:
prolog - Prolog:目标 p(t) 的评估在哪些条件下 t 终止,哪些不终止?
考虑以下逻辑程序:
对目标 p(t) 的评估在哪些术语 t 中终止,哪些不终止?
loops - 结果后的Prolog循环
所以我写了这个谓词来查找列表的所有可能的子集+排列。我得到了正确的输出,但由于某种原因,程序在给我所有(正确的)结果后继续循环。
我究竟做错了什么?
我为 allSubsets([1,2,3], X) 得到的结果是:
我必须在最后两行中止循环。
提前致谢。
prolog - 终止条件序言
我的老师为我们提供了一些关于 Prolog 的幻灯片,我发现有些奇怪。
据他介绍,当第一个参数reverse([],..)
是完整列表时,程序终止。此外,如果您将谓词中的目标切换到reverse([X|Xs],Zs) :- append(Ys, [X], Zs), reverse(Xs,Ys).
程序应该在第二个参数是完整列表时终止reverse(..,[]).
这与我迄今为止所学到的有点背道而驰。我认为这两个论点都影响了程序的终止条件,显然他们没有按照我老师的例子。谁能给我一些意见?
prolog - No termination of predicate
I have some program about a graph with black and white vertices:
when I run the goal foo(X)
I get a problem:
If I remove the fact edge(root,root)
the program find some solutions (6 different solutions). Otherwise, I get infinite solutions and all are X=root
.
Why does this happen?
prolog - 在序言中有一个“全局堆栈之外”
嘿伙计们,我有一个关于 Prolog 的相当简单的问题。
在编译器中运行它后它说它没有问题但是当我尝试执行命令
plan(state1,on(b1,b2),Plan,FinalState).
时它只是说全局堆栈之外。有人可以帮我解决这个问题
prolog - 卡在序言中的无限循环
我希望我的程序找到整数 1,2,...,N 的所有大小为 K 的子集。
为此,我编写了以下 subs(N,X,Y) 表示 X 是集合 Y 的大小为 N 的子集。我定义了以下内容:
然后作为检查,我运行了 subs(2,X,[1,2,3,4])。
我得到了第一个答案 [1,2],但它从未给出第二个答案,因为它陷入了无限循环。我试图追踪它,似乎在找到第一个答案之后:
所以我看到我被困住了subs(0, _G619, [4])
。有人知道如何克服这个问题吗?
谢谢
prolog - 生成一系列整数——“本地堆栈外”[初学者]
gen(N,R)
:
R
是 0 到 N-1 之间的值,按顺序。
N
非零正整数。N
将永远给予。
例如:?- genN(2,R)
。给R=0;R=1.
我这样实现,但它有“本地静态错误”:
结果:
algorithm - Prolog:高效实现 Luhn 算法
我尝试在 SWI-Prolog 中应用 Luhn 算法。但是我在运行时遇到了一些问题。当我用像 123 这样的简单数字进行测试时,它会很快给出结果。如果我用更长的数字(如 5379173895860200)进行测试,它会运行很长时间,以至于我只能中止此执行。需要帮助来发现问题。代码:
prolog - SWI-Prolog:“假”在哪里?
通常,当目标失败时,我会返回“错误”,即目标不满足。有没有办法让 SWI-Prolog 打印它失败的子目标的谓词、行和/或序列号。我不想跟踪整个程序,只是想要一些类似于其他编程语言的反馈。我知道 return 不是错误false
,但是在调试时,最好有这个反馈来查明问题。如果可以的话当然可以。
谢谢