prolog - 如何在不使用内置算法的情况下在 prolog 中编码除法和余数谓词
问题描述
我需要在 Prolog 中编写除法和余数谓词(是的两个谓词)而不使用内置算术。它需要是新的谓词:除法(X,Y,Z)表示X除以Y的整数结果为Z。余数(X,Y,Z)表示X除以Y的余数为Z。
是的,我需要从头开始编写它们。我不允许使用内置算法。
我怎样才能做到这一点?你能给我一些例子并向我解释它为什么有效吗?
解决方案
好吧,这不是一个完整的解决方案,但您可以在它的基础上进一步扩展它......我将整数表示为一个充满 i 的列表。所以 [i,i,i,i] == 4
我没有给你写将结果转换为整数的过程,但你需要定义这 10 位数字并从那里开始工作以形成多位数字。
我不支持零除法......并且没有真正调试过这个东西......我只是把它作为一个想法并写下来:-D
也许你可以启动它来构建一些很酷的东西!
div(X, Y, Z, R) :-
div_inner(X, Y, Y, Z, R).
div_inner([], [], _, [i], []).
div_inner([], [i|Y], _, [], [i|Y]).
div_inner([i|X], [], D, [i|Z], R) :-
div_inner([i|X], D, D, Z, R).
div_inner([i|X], [i|Y], D, Z, R):-
div_inner(X, Y, D, Z, R).
它只是返回两个值的谓词。Z 是结果 R 是余数!
显然,这里不考虑性能,只是纯粹的艺术编码:-D
玩得开心
推荐阅读
- debugging - Nativescript cloud build and debug from vs code like sidekick
- python - 如何将简单的 png 图片添加到我的散景网站?
- android - 我正在使用 ubuntu 操作系统。当我在Android studio中运行模拟器时,它等待了很长时间并关闭
- html - 如何通过指向 REST api 的 href 标签显示图像?
- kotlin - Kotlin 将数字分解为 2 的幂
- php - php if (($ _ SERVER ['REQUEST_URI'])
- javascript - 我的网页在使用 html 和 css 构建的页眉和页脚的右侧显示空白
- javascript - Firebase 函数将日期时间存储为地图
- azure - 在 Azure 区块链服务中哪里可以找到成员的私钥?
- r - 在R中函数的多个输出中输出彩色文本