prolog - 序言:反射(X,Y)->(Y,X)
问题描述
我试图在不使用内置函数(即交换等)的情况下生成除序言中的输入之外的第二个反射点。
我不确定如何通过根据另一个定义每个来交换它们而不会导致无限递归。
这是我在这里尝试过的。
reflection(X,Y) :- point(X,Y),point(Y,X).
point(X,Y).
更正:反射(点(1,2),点(2,1)。
但它不会正确回答:
反射(点(-5, 8),点(X,Y)),writeln(点(X,Y))...
Expect(8,-5),返回随机(~)大整数(prolog 标准)
解决方案
你的程序就是这个子句。
reflection(point(X, Y), point(Y, X)).
并使用reflection(point(-5, 8), point(X, Y)), writeln(point(X, Y)).
产量查询:
point(8, -5)
X = 8,
Y = -5
推荐阅读
- ios - 使 UILabel 很好地适合集合视图单元格
- math - DFA + 带乘法、加法、括号的计数器
- sql - 如何在 SQL 中实现 ER 图中显示的客户和帐户表
- sql-server - 每个多维数据集 OLAP 多个事实表
- android - LinearLayout 不显示所有 ListView 但只有一个孩子
- reactjs - 在 React-Navigation 中获取任何设备上标签栏的高度
- go - Golang 的 `all goroutines are sleeps - deadlock!` 错误背后的算法是什么?
- javascript - 对对象内的对象使用 Object.assign
- c# - OnPaint 鼠标悬停在按钮上时调用自身
- jetty - 如何记录 HttpClient 请求,响应包括正文?