2013-12-08 4 views
1

Так что в моем коде на прологе у меня есть факты, как один отформатированный ниже:Prolog, сравнивающие даты, чтобы увидеть до указанной даты

рыбы (тип, размер, date_caught).

Я хочу создать правило, которое позволит мне увидеть, какая рыба была поймана до определенной даты. Поэтому, если я набираю catch_before (2013-12-07). Он покажет всю пойманную рыбу до этой даты.

+0

Так где именно проблема? В какой момент ваша текущая программа не может выполнить ответ, который вы ищете? –

+0

Я не знаю, как сделать правило, которое позволяет мне ввести дату, которая покажет всю пойманную рыбу до этой конкретной даты. – user3078649

ответ

0

вы можете использовать @ < оператора:

1 ?- [user]. 
|: fish(a,b,2003-10-10). 
|: fish(a,b,2003-10-10). 
|: fish(a,b,2004-10-10). 
|: caught_before(D) :- fish(T,S,D1), D1 @< D. 
Warning: user://2:23: 
    Singleton variables: [T,S] 
|: 
% user://2 compiled 0.02 sec, 2 clauses 
true. 

2 ?- caught_before(2005-X-Y). 
true ; 
true ; 
true. 

2 ?- caught_before(2004-X-Y). 
true ; 
true ; 
false. 

2 ?- caught_before(2003-X-Y). 
false. 
+0

Спасибо вам большое! – user3078649

0

Может быть, это может помочь:

? Y-M-D = 2013-12-08. 
Y = 2013, 
M = 12, 
D = 8. 
+0

Здравствуйте, Возможно, я не был ясен. Мне нужна помощь по созданию правила, которое позволяет мне ввести дату, которая покажет всю пойманную рыбу до этой конкретной даты. – user3078649

Смежные вопросы