gpt4 book ai didi

list - 将数字拆分为 Prolog 中的数字列表

转载 作者:行者123 更新时间:2023-12-04 17:53:47 26 4
gpt4 key购买 nike

我一直在尝试使用 Prolog 将数字拆分为列表时遇到问题,例如123456 变成 [1,2,3,4,5,6]

你能帮我弄清楚如何做到这一点吗?

最佳答案

可用的内置是 ISO 标准的:

?- number_codes(123456,X),format('~s',[X]).
123456
X = [49, 50, 51, 52, 53, 54].

?- number_chars(123456,X),format('~s',[X]).
123456
X = ['1', '2', '3', '4', '5', '6'].

我还有一些为我的解释器开发的非常旧的代码。 := 必须重命名为 is 才能与标准 Prolog 一起运行。但是你最好从上面的内置程序中得到服务......
itoa(N, S) :-
N < 0, !,
NN := 0 - N,
iptoa(NN, SR, _),
reverse(SR, SN),
append("-", SN, S).
itoa(N, S) :-
iptoa(N, SR, _),
reverse(SR, S).

iptoa(V, [C], 1) :-
V < 10, !,
C := V + 48.
iptoa(V, [C|S], Y) :-
M := V / 10,
iptoa(M, S, X),
Y := X * 10,
C := V - M * 10 + 48.

在此处编辑 获取号码所需的额外调用:
?- number_codes(123456,X), maplist(plus(48),Y,X).
X = [49, 50, 51, 52, 53, 54],
Y = [1, 2, 3, 4, 5, 6].

关于list - 将数字拆分为 Prolog 中的数字列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11701991/

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