2011-01-24 3 views
4

timetime(hour, minute) 형식의 구조가 있다고합니다. 어떻게 그들을 비교하기위한 규칙을 작성하려고합니까? time1이 time2 전의 경우 yes를 리턴하는 compareTime (time1, time2) 행을 따라있는 것.프롤로그에서 시간 비교

나는 C로 몇 년간 일한 끝에 Prolog로 시작하고 있으며, 전체 언어가 매우 혼란 스럽다.

답변

5

시간 (H, H1, H2)과 분 (M1, M2)이 숫자는, 당신이로 쓸 수 있습니다 가정하면 : 2 라인에

earlier(time(H, M1), time(H, M2)) :- !, M1 < M2. 
earlier(time(H1, _), time(H2, _)) :- H1 < H2. 

밑줄 익명 변수는 우리 돈 즉,이다 시간을 보면서 어느 시간이 더 빠른지를 결정할 수 있다면 이름을 분에 할당하는 것이 어렵습니다.

+0

이, 감사 작품! 두 번째 줄에 약간의 질문이 있습니다. '_'의 의미는 무엇입니까? –

+1

@dc, 선택 지점을 남기고 대답 – Kaarel

+0

을 편집했습니다. – salva

6

표준 compare/3 조건은 이미 당신이 원하는 것을 :

?- compare(O, time(1,1), time(1,1)). 
O = (=). 

?- compare(O, time(1,1), time(1,2)). 
O = (<). 

?- compare(O, time(1,3), time(1,2)). 
O = (>). 

?- compare(O, time(1,3), time(2,2)). 
O = (<). 

?- compare(O, time(3,2), time(2,2)). 
O = (>). 

그래서 ...

earlier(T1, T2) :- compare((<), T1, T2). 
+4

'@<'도 할 것입니다. +1. –