prolog - Prolog如何在N×N网格上以“X/Y”格式查找所有坐标
问题描述
我看过很多提出类似问题的教程,但我遇到的问题是我们的教练希望我们使用精确形式“X/Y”的变量来表示我们的坐标,中间带有斜线,并且我不确定如何映射如何将代码映射numlist(1,N,ListToGenerate).
为这种格式的在线示例。
所以,作为一个具体的例子,我想知道,我如何创建一个列表,其中的值从 1/1 运行到 N/N,更抽象地说,你甚至将这种格式的变量称为什么?它们不是元组,也不是 2 元素列表……我想称它们为复合变量,但我也不确定这是否正确
解决方案
如果您不确定“实际”一词是什么,请使用write_canonical/1
获取该词的规范表示。
例如:
?- write_canonical(a/b)。 /(a,b)
因此,您会看到: 形式的术语X/Y
是术语/(X,Y)
,也就是说,就像任何其他复合术语一样。在这个具体的例子中,函子是/
,它也是一个中缀运算符,因此除了函数符号之外,您还可以使用中缀符号。您所说的“元组”也是复合术语。事实上,Prolog 没有“元组”。
您构建这些术语的方式与所有其他术语完全相同:您可以直接将它们写下来,如 in[1/1,1/2,1/3,...]
或通过谓词描述它们。
在您的特定情况下,一个全解决方案谓词 likefindall/3
可以帮助您将所有解决方案收集between/3
到一个列表中:
findall(X/Y, ..., List)
我把这...
部分作为一个挑战。
推荐阅读
- c# - 如何在c#中压缩4GB以上的文件时跳过ZIP64格式
- ios - 如何更新视图控制器
- excel - 删除单元格中的前导分号
- reactjs - 仅当在 React 中触发回调时才从状态返回值
- java - 如何结合 *\u" 和 UTF-8 代码进行控制台输出?(Java)
- javascript - 突出显示填字游戏 js/jquery 表中的单词输入字段
- javascript - 在多个复选框和输入字段的行为中建立依赖关系
- javascript - 有没有办法可以使用 javascript 来更改组件的隐藏值(在 css 中)?
- vba - 在 VBA 中使用 CreateProcess 和 Powershell Start-Process 时,Set-ItemProperty 找不到路径
- git - git rev-list 在 github 操作中不起作用