저는 프롤로그를 처음 사용하고 있으며, 하나의 답변을 찾은 후 쿼리를 중지하는 방법을 실험하고 있습니다. member1(L,[L|_]).
member1(L,[_|RS]) :- member1(L,RS),!.
결과는 다음과 같습니다 :이 코드를 사용하고 있는데? "진정한"나는 프롤로그가 인쇄를 중지하는 얻을 수있는 방법으로 잃었어요 | ?- m
나는 my previous question의 대답과 설명을 읽었으며 주어진 설명을 Bratko (인공 지능을위한 프롤로그 프로그래밍, 130 쪽)에 적용 해 보았습니다.), 나는 그것을 완전히 이해하고 있는지 확신 할 수 없다. 목표 목록에서 는 C :- P, Q, R, !, S, T, U. 프롤로그 하나 하나의 시도가 결국에 정상으로, 변수를 인스턴스화합
나는 프롤로그 프로그래머들에게 매우 간단한 질문을 가지고있다. 이 과정은 매우 쉬워야하지만 그 언어에 대한 경험이 없으므로 도움을 받으십시오. Prolog에서 간단한 프로그래밍 언어를 해석하려고합니다. 이 언어에서는 간단한 변수와 배열 변수라는 두 가지 유형의 변수를 사용할 수 있습니다. %calc(+var, +state, -result)
변수 일 수
프롤로그 재귀 함수 : 난은 예컨대리스트 의 각 요소와 C를 인쇄 할 : C = 30 [H는 | T] = -13, -10, -30] myfunc(C,[H|T]):-
(\+([H|T]=[])),
write(C), write(' with '), write(H), nl,
myfunc(C,T).
나는 처음에 목록의 머리가 비어 있지
내가 정의 내 지식 기반과 같이 ?- swim(simba,bybirth).
?- swim(simba,mustlearn).
그리고 쿼리 모두는 프롤로그가 true를 돌려 : 이제 edge(mammal,isa,animal).
edge(human,isa,mammal).
edge(simba,isa,human).
edge(animal,swim,bybir
이 작업에는 Prolog 데이터베이스가 있습니다. 에지 (1,0) 에지 (2,0) 에지 (1,3) 에지 두 지점이 결합 된 것을 의미한다. reach (i, j, k)라는 함수를 작성해야합니다. 여기에서 i는 시작점이고 j는 끝점이며 k는 사용할 수있는 단계의 수입니다. 반복 루핑을 멈추기 위해 K가 필요하다. 내가 가진 유일한 단점은 1에서 3으로 가고,