2011-12-13 8 views
-1

난 하위 목록 결과 목록의 임의 번호를 추가 할 술어를 작성하려고합니다.목록에 요소를 추가하는 프롤로그 재귀

my_predicate([], AnotherList, []). 
my_predicate([Head|List], AnotherList, Result):- 
    random(0,5,N), 
    nested_predicate(N, Head, AnotherList, SM), 
    my_predicate(List, AnotherList, Result), 
    append(SM, Result, SM2), 
    write(SM2). 

거의 모든 것이 정상이지만 SM2를 결과에 할당 할 수는 없습니다. 내가 뭘 잘못하고 있니?

+0

또한 nested_predicate의 정의를 게시해야한다, 또는 뭔가를 시도하기 어렵다 .. –

답변

2

프롤로그에서는 변수에 값을 "할당"할 수 없습니다. 또한 코드에서 Result은 항상 빈 목록에 바인딩됩니다.

나는 당신이 원하는 것은이 같은 가정 :

my_predicate([], AnotherList, []). 
my_predicate([Head|List], AnotherList, Result):- 
    random(0,5,N), 
    nested_predicate(N, Head, AnotherList, SM), 
    my_predicate(List, AnotherList, SM2), 
    append(SM, SM2, Result), 
    write(Result). 
관련 문제