"생성 및 테스트"를 사용하여 암호 연산 퍼즐을 풀기 위해 프롤로그 코드를 작성하도록 요청 받았습니다. 예를 들어 나는 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([],[]) :-
!.
을하지만 버그를 가지고 있고 그것을 찾을 수 없습니다 ... 당신이 나를 도와 드릴까요?
매우 관련성이 높은 질문 : http://stackoverflow.com/questions/10925285/faster-implementation-of-verbal-arithmetic-in-prolog –