여기 몇 가지 질문은이 기사와 비슷하지만 경험이 없으며 솔루션을 사용하는 방법을 모르겠다. 내 문제 :/Prolog - 목록 및 하위 목록 중 하나의 요소를 사용한 작업
나는이 목록과 같은 목록을 가지고 있습니다 : [[5], [4,7], [1,2,7], [2,6,7], [2 , 4,6,7], [2,4,7], [9,8], [3], [1]
예를 들어 인덱스 3을 알아야합니다. 내가 알고 있어야하는 번호는 목록의 목록에만 한 번 나타납니다. 이는 이전의 함수 호출 조건입니다. 필자가 필요로하는 인덱스는 숫자 3의 경우 인덱스 9 (1에서 시작)입니다. 나는이 초안을 가지고 있었다 :
given_elem_finds_pos(ListOfLists, Element, Pos):-
nth1(Pos, ListOfLists, [Element|_]).
그러나 요소가 하위 목록의 머리 인 경우에만 Pos를 반환합니다. 나는 어떻게 색인을 얻는 지 알 필요가있다.
8. 그럼이 한 짓 번호 :
given_elem_finds_pos([[H|T]| R], Element, Ind):-
member(Element, [H|T]),
Ind1 is Ind + 1,
given_elem_finds_pos(R, Element, Ind1).
그러나 다시는 성공하지 .. 아무도 도와 드릴까요? 정말 고맙습니다!
빠른 응답을 보내 주셔서 감사합니다. 나는 다른 절을 만들고 여러분이 무엇을했는지 알아 내려고 노력하고 있습니다. 그래서 다 끝났다고 말할 수는 없지만, 뭔가 말 해주세요. 마지막 반복에서 또는 given_elem_finds_pos/4가 호출 된 마지막 시간에 Prolog가 끝납니다. 인덱스가 하나씩 늘려갔습니다. 아니면 네가하지 않는거야? 왜냐하면 그렇게한다면 솔루션과 동일한 최종 가치가 아닌가? –
예, 맞습니다. 카운터가 증가하고 검색된 하위 목록이 발견되면 카운터는 색인과 같습니다. 그래서 추가 인수가 필요한 이유입니다. 'given_elem_finds_pos ([List | R], Element, Solution, Solution) :'로 시작하는 코드의 stop 절은 현재 카운터로 솔루션 색인을 인스턴스화합니다. –
나는 그것을했고 그것이 작동, 고마워요 !! –