问题标签 [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.

0 投票
2 回答
181 浏览

prolog - 如何使用 dif/2 防止生成序列中的重复?

这个问题是在回答StackOverflow上的另一个问题时出现的,该问题是(概括一点)生成由有限元素集形成的所有序列,没有重复出现。

正如鲍里斯在评论中正确指出的那样,这个问题有许多现有的解决方案。但是,我对不使用累加器(即,与新选择的元素进行比较的已选择元素的列表)但使用dif/2语句的解决方案感兴趣。

为了说明,在我的以下程序中,我有 4 个元素,并且在 4 次递归调用之后,有几个div/2语句声明到目前为止已经选择的 4 个元素是成对不同的。由此可以推断,继续递归并寻找第五个元素是没有意义的,因为给定的div/2语句已经没有元素了。有没有办法将这些“知识”编码到程序中,使其不再循环?

当前的循环行为:

0 投票
1 回答
78 浏览

prolog - Prolog:目标 p(t) 的评估在哪些条件下 t 终止,哪些不终止?

考虑以下逻辑程序:

对目标 p(t) 的评估在哪些术语 t 中终止,哪些不终止?

0 投票
2 回答
386 浏览

loops - 结果后的Prolog循环

所以我写了这个谓词来查找列表的所有可能的子集+排列。我得到了正确的输出,但由于某种原因,程序在给我所有(正确的)结果后继续循环。

我究竟做错了什么?

我为 allSubsets([1,2,3], X) 得到的结果是:

我必须在最后两行中止循环。

提前致谢。

0 投票
1 回答
526 浏览

prolog - 终止条件序言

我的老师为我们提供了一些关于 Prolog 的幻灯片,我发现有些奇怪。

据他介绍,当第一个参数reverse([],..)是完整列表时,程序终止。此外,如果您将谓词中的目标切换到reverse([X|Xs],Zs) :- append(Ys, [X], Zs), reverse(Xs,Ys).程序应该在第二个参数是完整列表时终止reverse(..,[]).

这与我迄今为止所学到的有点背道而驰。我认为这两个论点都影响了程序的终止条件,显然他们没有按照我老师的例子。谁能给我一些意见?

0 投票
1 回答
146 浏览

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?

0 投票
1 回答
156 浏览

prolog - 在序言中有一个“全局堆栈之外”

嘿伙计们,我有一个关于 Prolog 的相当简单的问题。

在编译器中运行它后它说​​它没有问题但是当我尝试执行命令 plan(state1,on(b1,b2),Plan,FinalState). 时它只是说全局堆栈之外。有人可以帮我解决这个问题

0 投票
2 回答
1206 浏览

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])。有人知道如何克服这个问题吗?

谢谢

0 投票
1 回答
81 浏览

prolog - 生成一系列整数——“本地堆栈外”[初学者]

gen(N,R)

R是 0 到 N-1 之间的值,按顺序。 N非零正整数。N将永远给予。

例如:?- genN(2,R)。给R=0;R=1.我这样实现,但它有“本地静态错误”:

结果:

0 投票
2 回答
1403 浏览

algorithm - Prolog:高效实现 Luhn 算法

我尝试在 SWI-Prolog 中应用 Luhn 算法。但是我在运行时遇到了一些问题。当我用像 123 这样的简单数字进行测试时,它会很快给出结果。如果我用更长的数字(如 5379173895860200)进行测试,它会运行很长时间,以至于我只能中止此执行。需要帮助来发现问题。代码:

0 投票
2 回答
431 浏览

prolog - SWI-Prolog:“假”在哪里?

通常,当目标失败时,我会返回“错误”,即目标不满足。有没有办法让 SWI-Prolog 打印它失败的子目标的谓词、行和/或序列号。我不想跟踪整个程序,只是想要一些类似于其他编程语言的反馈。我知道 return 不是错误false,但是在调试时,最好有这个反馈来查明问题。如果可以的话当然可以。

谢谢