특정 값으로 합계 값으로 그룹을 발견하는 프로그램 : 예를 들어 동전프롤로그 - 나는 3 개 인수받는 프로그램을 만들고 싶어
- 목록 1 :
[5,2,1]
- 값을 - 합계 우리 원하는 번호 :
- 이 특정 값과 합친 동전 목록 -이 목록은 목록 1의 하위 목록입니다. (예 : 4에 도달하기 위해 동일한 요소를 반복 할 수 있습니다.
[2,2]
)
때문에 프로그램은이 일을해야합니다
change([5,2,1],4,[2,2])
돌아갑니다Yes
(원인은 2 + 2 = 4)change([5,2],6,Coins)
이 내 시도Coins = [2,2,2]
반환합니다 :
change(_,0,Res).
change([X|Xs],Sum,Cs):- Sum <X, change(Xs,Sum,Cs).
change([X|Y],Sum,[X|Res]):- Sum>=X, Sum2 is Sum - X, change([X|Y],Sum2,Res).
귀하의 질문에 정확히 무엇에주의를 지불? 첫 번째 규칙은'change (_, 0, []) .' ('Res' 대신'[]')입니다. –
잘 .. 내가 그랬던 것처럼 작동하지 않아 .. – Ohad
[u]로 변경해야하는 이유는 무엇입니까? 나는 그렇게 생각하지 않는다. 0을 얻으려면 일단 값을 얻으려면 필요한 설정을해야합니다. – Ohad