2014-10-21 2 views
1

Prolog에 약간의 문제가 있습니다. 나는 너희들이 나를 도울 수 있기를 바랍니다!SWI Prolog - 변수 이름 및 변수 값

'찾기'는 목록에서 색인 (예 : 4)을 찾아 답장을 반환합니다. find (Liste, Index, Return)

출력

은 같은 것입니다 :

출력 요소 : 네
출력 결과 : _G2360.

내 생각에는 _G2360이 변수의 내부 이름입니까? 얻으려면 무엇을해야합니까 :

출력 결과 : 4.

코드의 세그먼트 :

[...] 
    find(List,4,Return), 
    write("Output result: ",Return). 

find([Element|_],0,Element):- 
    write("Output element: ",Element). 
find([_|List],N,_) :- 
    N1 is N-1, 
    find(List,N1,_). 

감사합니다! 나쁜 제목을 쓰고 죄송합니다. 문제가되는 몇 가지 의미있는 단어로 생각할 수있는 좋은 단어를 생각할 수 없습니다. 당신의 find의 재귀 절은 당신이보고있는 문제를 일으키는 재귀 호출에 Element을 통과하지

+0

쓰기/2이 인수 오류가 발생합니다, 그것은 결코 _G2360 또는 네 – false

답변

1

: 당신이 Element 대신에 통과 변수의 _G2360이된다 "상관 없어"당신의 출력, 그것은 무엇이든 통합되기 때문입니다. 여기

는이 문제를 해결할 수있는 방법입니다 :

find([Element|_],0,Element). 
find([Head|List], N, Element) :- N1 is N-1, find(List, N1, Element). 

Demo.

+0

이 올바른 출력하지 않습니다. 덧붙이 자면, OP 찾기가'find'를 평가 한 후에 그것을 수행하고 있기 때문에 첫 번째 절에서'find '에 대한'write'는 전혀 필요하지 않습니다. –

+0

@Boris Thanks! 나는 데모를 작곡 할 때도 똑같은 것을 깨달았으므로 첫 번째 절에서'write'를 삭제했습니다. – dasblinkenlight

+0

감사합니다. 이제 완벽하게 작동합니다! – Tim