2012-12-05 2 views
0

저는 초보자 프로그래머입니다. 과제를 위해 나는 단지 기본 프로그램 만 가지고 성공해야합니다. 리스트 X가 2 개 (살)의 요소의리스트 인 경우, 최초의 요소와 2 번째의 요소의리스트 프롤로그의 내보기에서 프롤로그 : 두 요소의 목록을 가져 와서 첫 번째 요소가 두 번째 요소와 같은 경우에만 참을 반환하십시오.

이 프로그램은 아주 작은 것 같다, 그래서 이것을 입력 : 나는 swipl 아래를 실행하면

firstPair(x,x). 

, 내가 출력으로이 얻을 :

Syntax error: Operator expected 

거기에 뭔가 더해야 할 일이 있습니까? 나는 이것을 firstPair (1,2)라고 말하면서 실행했다. 이것이 거짓이라는 것을 알 필요가있는 모든 것입니다.

+0

그것은 분명하지 않다 : 적어도 보여주는 프로그램은 유효한 구문입니다. – false

+0

나는 당신이 과제를 잘못 이해했다고 생각합니다 : firstPair (X)를 써야합니다 (* single * 인수에주의하십시오). 그렇다면 '모양'X가 꼭 필요한 것은 무엇입니까? – CapelliC

답변

3

먼저 소문자 x은 변수가 아니며 원자입니다. 문제를 해결하기 위해 x 대문자로 만든다 :

firstPair(X,X). 

둘째, 당신은 인터프리터에이를 입력하지 마십시오. 대신 파일 firstPair.pl에 기록한 다음 해당 파일을 Prolog로 읽습니다. 명령 프롬프트에서

,이 입력

['firstPair.pl']. 

을 눌러 입력합니다. 이제 firstPair/2 규칙을 사용할 수 있습니다. 목록에 대한 할당 회담이, 내가 생각하기 때문에

마지막으로, 강사는하지 firstPair/2firstPair/1, 쓰고 싶다 :

firstPair(X,X). 

이 성공

firstPair([X,X]). 
+0

오류 메시지 "구문 오류"가 발생하지 않습니다. – false

+0

@false 결국 문제가있는 것처럼 보입니다. – dasblinkenlight

+0

@ user1768884 : 당신처럼 (나 같은) 구문이 덜 어지럽 으면 좋겠습니까? - [firstPair]. 작동합니다. – CapelliC

0

여러분의 프로그램/사실을 두 개의 인수하는 경우 주어진 경우 이 목록, 원자, 변수 등 이건간에 통합 될 수 있습니다. 사용자의 사양을 충족 시키려면

목록 X가 두 번째 요소의 목록 인 두 번째 요소 인 의 목록 인 경우에만 성공하는 프로그램입니다.

는이 같은 필요 : 단일 용어를 통과 (또는으로 통합 될 수있다) 경우

list_of_two_elements([X,X]). 

이 성공할 두 요소의 목록을, 또는 만들 수 있습니다 통일을 통해 동일하다. 예를 들어, 다음의 모든 성공합니다 :

  • list_of_two_elements(X).

    성공은, 변수 X는 같은 언 바운드 변수 [V1,V1] 같은 것을 포함하는 두 요소의 목록으로 통합됩니다.

  • list_of-two_elements([1,X]).

  • list_of_two_elements([1,1]).는 (성공, 여기 X는 정수 1와 통합 된 것입니다.) 오류 메시지가 어디에서 오는지 당신의 설명에서

관련 문제