gpt4 book ai didi

list - Prolog:将元素放入列表中以进行十进制到二进制的转换

转载 作者:行者123 更新时间:2023-12-02 21:41:09 25 4
gpt4 key购买 nike

您好,我正在尝试修改十进制到二进制的转换函数,以便它将结果显示在列表中。我是序言新手,我似乎无法让它正常运行。

dec2bin(0,0).
dec2bin(1,1).
dec2bin(N,L):- N>1,X is N mod 2,Y is N//2, dec2bin(Y,L1), L = [L1|[X]].

然后这就是结果:

86 ?- dec2bin(26,L).
L = [[[[1, 1], 0], 1], 0]

有人可以帮我理解我做错了什么吗?谢谢

最佳答案

如果你修改代码

dec2bin(0,[0]).
dec2bin(1,[1]).
dec2bin(N,L):-
N > 1,
X is N mod 2,
Y is N // 2,
dec2bin(Y,L1),
L = [X|L1].

您将获得按相反顺序排列的解决方案:

?- dec2bin(26,L).
L = [0, 1, 0, 1, 1]

不要附加每个位,而是考虑最终反转/2,或通过累加器反转顺序

dec2bin(N,L) :- dec2bin(N,[],L).

dec2bin(0,L,[0|L]).
dec2bin(1,L,[1|L]).
dec2bin(N,L,R):-
N > 1,
X is N mod 2,
Y is N // 2,
dec2bin(Y,[X|L],R).

关于list - Prolog:将元素放入列表中以进行十进制到二进制的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20437673/

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