问题标签 [dcg]
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.
list - Prolog 列出错误:超出全局堆栈
我正在尝试在 prolog 中编写规则
adjacent(X,Y,Zs)
,就true
好像X
并且Y
在 list 中彼此相邻Zs
。
我目前有:
测试:
你们有什么想法吗?提前致谢。
prolog - 你如何将 DCG 翻译成 PROLOG 中的普通定句?
您如何将以下 DCG 翻译成 PROLOG 的普通定句?
编辑:我想将 DCG 翻译成普通的 PROLOG 子句,因为我不能在同一代码中同时使用 DCG 和普通子句(在我的情况下)。我有这两条代码:
件1:
如何使用它的一个例子是:
第 2 部分:
如何使用它的一个例子是:
我想将两个代码合二为一,以测试 traducir 是否写得好(如果它遵循 DCG)并将您输入的内容翻译成文本,因此最终程序应该能够执行以下操作:
prolog - prolog 搜索列表
我正在尝试比较这些列表。给定函数(List1,List2),List1 的长度为 N,List 2 的长度为 M 且 N>M。
我想检查 List2 的任何排列是否恰好是 List1 的前 M 个字符。
例如,
应该是真实的
应该是假的。
谢谢你。
unit-testing - 扩展 DCG 测试用例
我正在寻找扩展 DCG 测试用例。是指测试用例,根据生成的转换规则的行为而不是根据其脱糖能力来检查 DCG 处理器的正确功能。
我想我曾经在网上看到过一些这样的测试用例。但我失去了他们的踪迹。现在我只找到以下测试用例:
http://www.sju.edu/~jhodgson/wg17/Drafts/DCGs/test_cases
(此处相同:http ://www.sju.edu/~jhodgson/wg17/dcgs.pdf )
但它们只是外延和内涵的,即它们测试脱糖、转换是否成功或出错。他们甚至没有显示转换结果应该是什么,这并不困扰我,因为我无论如何都在寻找扩展 DCG 测试用例。
欢迎任何指点。
再见
PS:这个显示转换,但它仍然是内涵而不是外延:
http
:
//www.sju.edu/~jhodgson/wg17/GRIND.TXT 它有例如:
但是许多 Prolog 系统在 DCG 中对终端、否定等使用不同的方法。所以扩展测试套件会更方便。
prolog - Prolog中的扑克牌
我正在尝试编写一个谓词来分析常见的扑克手;例如,给定一个“卡片”列表,确定玩家是否有 4 个同类;3种;对等:我的想法是检查相似的排名,如果没有则删除:
这适用于四种([“A”,“J”,10,“Q”,“A”,“A”,“A”])
但不是所有情况;这里的逻辑有什么指导吗?
谢谢
prolog - Prolog - 回文函子
我正在尝试palindrome/1
在 Prolog 中编写一个谓词,当且仅当其列表输入由回文列表组成时才为真。
例如:
是真的。
有什么想法或解决方案吗?
list - Prolog - 将列表分成 N 部分
我正在尝试编写一个将列表分成 N 部分的谓词。这就是我到目前为止所拥有的。
这个想法是继续将列表的部分切割成另外两个部分,直到我有 N 个部分。我用这种方法得到了平庸的结果:
所以我得到了我想要的,但我得到了两次,还有一些其他的东西。当分成 3 个部分时,情况会变得更糟:
另一个想法是使用前缀,但我不知道这将如何真正起作用。为了使用它,我应该能够让 Prolog 知道它需要一个不太短也不太长的前缀,所以我不会使用一个太长的前缀,所以没有任何东西可以用于下一个递归步骤。
谁能指出我正确的方向?
一点澄清:谓词应该返回将列表分成 N 部分的所有可能性(不包括空列表)。
prolog - 表中的 Prolog 点
我有一个代表二维列表 x 的给定列表。该表包含两个 1 的“点”,如下例所示:
我只需要将第二个点从 1 更改为 2,如下例所示:
我需要一个谓词separate(L,M)
,它将采用第一个列表 L 并生成第二个表 M
如果我们可以在不使用任何标准谓词(如“findall”等)的情况下解决这个问题,那就太好了......
prolog - 我解决 3 壶水谜题的序言程序有什么问题?
谁能找到为什么我在这段代码中的“开始”无法得到任何真正的答案?例如,我写go(7,3,l)
了,我想它应该将 3 升水移到第二个水罐中,但根据序言,这是错误的。怎么了?
shell - Prolog 从用户那里获取字符串输入并避免在输入错误的情况下程序终止
我正在尝试在 prolog 中编写一个简单的 shell。我目前使用 read/1 查询用户的输入。
但是,我有两个问题要解决。
1) 用户只能输入条款。
该查询要求用户输入一个术语并要求输入以句点结尾。这是为了限制,因为我希望用户能够输入诸如“将变量设置为值”之类的命令(我将解析此字符串)。有没有办法在序言中读取这些字符串?(如果可能没有任何开销,例如列表表示、报价或结束期间?)
2) 如果用户输入了不正确的内容(例如空格),我会收到语法错误并且 shell 结束。处理这些错误并避免程序终止的快速且正确的方法是什么?
非常感谢所有帮助!