gpt4 book ai didi

prolog - 在Prolog中将peano数s(N)转换为整数

转载 作者:行者123 更新时间:2023-12-04 14:33:03 24 4
gpt4 key购买 nike

我在教程中遇到了这个逻辑数的自然数评估,它让我有些头疼:

natural_number(0).
natural_number(s(N)) :- natural_number(N).

该规则大致说明:如果 N0很自然,如果不是我们尝试发送 s/1的内容递归返回规则,直到内容为 0 ,那么它是一个自然数,如果不是,那么它不是。

所以我测试了上面的逻辑实现,心里想,如果我想代表 s(0),这很有效。如 1s(s(0))2 ,但我希望能够转换 s(0)1反而。

我想到了基本规则:
sToInt(0,0). %sToInt(X,Y) Where X=s(N) and Y=integer of X

所以这是我的问题 :如何将 s(0) 转换为 1,将 s(s(0)) 转换为 2?

已回答

编辑:我修改了我接受的答案指向我的实现中的基本规则:
decode(0,0). %was orignally decode(z,0).
decode(s(N),D):- decode(N,E), D is E +1.

encode(0,0). %was orignally encode(0,z).
encode(D,s(N)):- D > 0, E is D-1, encode(E,N).

所以我现在可以随意使用它了,谢谢大家!

最佳答案

这是另一个使用 library(clpfd) “双向”工作的解决方案SWI、YAP 或 SICStus

:- use_module(library(clpfd)).

natsx_int(0, 0).
natsx_int(s(N), I1) :-
I1 #> 0,
I2 #= I1 - 1,
natsx_int(N, I2).

关于prolog - 在Prolog中将peano数s(N)转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8954435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com