gpt4 book ai didi

prolog - 密码算术难题(Prolog)

转载 作者:行者123 更新时间:2023-12-02 05:06:08 25 4
gpt4 key购买 nike

我被要求编写一段 Prolog 代码来使用“生成和测试”来解决密码算术难题。例如,我得到 solve([R,O,B],[B,E,R,T],[N,O,R,E,S]) 并且我需要找到一个分配对于字母。所以我写了这段代码:

sum(List1,List2,SumList) :-
append(List1,List2,List3),
append(List3,SumList,AllList),
assign([0,1,2,3,4,5,6,7,8,9],AllList),
add_zero(List1,List1Z),
add_zero(List2,List2Z),
add_zero(SumList,SumListZ),
name(Num1,List1Z),
name(Num2,List2Z),
name(SumNum,SumListZ),
SumNum is Num1+Num2,
!.

remove(X,[X|Xs],Xs).
remove(X,[_|Ys],Res) :-
remove(X,Ys,Res).

assign(Digits,[X|Tail]) :-
nonvar(X),
!,
assign(Digits,Tail).
assign(Digits,[X|Tail]) :-
remove(X,Digits,D1),
assign(D1,Tail).
assign(_,[]) :-
!.

add_zero([X|Tail1],[Y|Tail2]) :-
!,
Y is X+48,
add_zero(Tail1,Tail2).
add_zero([],[]) :-
!.

但是我有一个错误,我找不到它......你能帮助我吗?

最佳答案

您的代码的问题在于,在 remove/3 的第二个子句中,您没有保留未删除的项目。它应该是:

remove(X,[Y|Ys],[Y|Res]):-
remove(X,Ys,Res).

我用 SEND + MORE = MONEY 尝试了你的代码,修复该过程后工作正常。

但是它没有找到 ROB + BERT = NORES 的解决方案...根据 this site ,它有很多求解器,您的方程无解。

关于prolog - 密码算术难题(Prolog),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11882760/

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