prolog - 检查一个数字是否在两个值之间
问题描述
我是 prolog 的新手,并且正在尝试编写一个程序来执行以下操作,告诉我一个数字是否介于 2 个值之间,我可以执行以下操作:
between(L, X, R) :-
X > L, X < R.
并且做 between(1, 3, 5) 有效,但我希望它能够做 between(1, X, 5) 并让 prolog 返回介于两者之间的所有值,所以在这种情况下 X = 2, X = 3 ,X = 4,我明白为什么我的解决方案没有,因为它需要被初始化,但我想不出这个问题的解决方案,这种类型的事情不能在序言中完成吗?,帮助是十分感谢
解决方案
解决此问题的一种方法:
digit(0).
digit(1).
digit(2).
digit(3).
digit(4).
digit(5).
digit(6).
digit(7).
digit(8).
digit(9).
between(L, X, U) :- digit(L), digit(X), digit(U), L < X, X < U.
测试:
?- between(2, X, 5).
X = 3 ;
X = 4 ;
false.
?- between(2, 7, U).
U = 8 ;
U = 9.
或者,您可能想研究Constraint logic programming。
顺便说一句,Prolog 已经有一个between/3
:
?- between(1, 5, X).
X = 1 ;
X = 2 ;
X = 3 ;
X = 4 ;
X = 5.
虽然它是“不合逻辑的”:你不能像上面的定义那样向后运行它。
推荐阅读
- mysql - MariaDB 10.1.31 上 TIMESTAMP 查询的错误结果
- c# - 如何将对象内的数据表绑定到 XAML 中的数据网格?
- laravel - 获取 403,使用 laravel 广播的私人频道时出错
- ios - 展开可选 IBOutlet 时出现错误(线程 1:致命错误:展开可选值时意外发现 nil)
- flask - 如何在flask-jwt-extended中的redis中存储jwt令牌?
- module - 如何使用自定义模块在产品视图页面上添加新按钮以打开模块 url
- tinymce - tinyMCE 编辑器或 Jsoup 可以修复 html 标记错误吗?
- python - python结构的新手,无法运行基本代码
- node.js - 尝试 ./bin/www 时,数据存储不是构造器错误
- xml - 将xml转换为cpp的批处理文件