zunächst einmal, sollten Sie die Notiz von @Boris Konto setzen, zweite, , um das Problem, Ihr Prädikat in drei Teile geteilt zu vereinfachen:
Teil 1:
- wissen, ob das Jahr ist Sprung oder gemeinsame,
- beeinflussen die Anzahl der Tage für jeden Monat,
- Schließlich folgt dieser Teil der folgenden Schuldenregel;
Code:
calcule_days([Y,M,D],Res):-
Res is (((Y*1461)/4)+((M*153)/5)+D).
Teil 2:
- berechnet die Differenz zwischen den beiden Daten so
- die
formula
(Part1) gelten mit date1 und date2,
- berechnen die Unterschiede zwischen den beiden Ergebnissen
difference_date1_date2
,
- das negative Vorzeichen zu vermeiden
abs(difference_date1_date2)
- hinzufügen
round (result_abs_pred)
Demo-Code ein Wertansatz zu erhalten:
dateDifference(NumberOfDays,date(YEAR1,MONTH1,DAY1),date(YEAR2,MONTH2,DAY2)):-
...
Teil3:
- Prüfung, ob das Ergebnis
>= 15
, Ergebnis muss True/false
sein
Demo-Code:
bigger_2weeks(date(YEAR1,MONTH1,DAY1),date(YEAR2,MONTH2,DAY2)):-
...
Sie sagen: "Ich habe es versucht". Sie sollten zeigen, was Sie versucht haben und erklären, warum es nicht funktioniert hat und wo Sie stecken bleiben. –
Check [** Bibliothek (julianisch) **] (https://github.com/mandrix/julian) von Michael Hendricks für eine sehr elegante und allgemeine Art, über Daten in Prolog nachzudenken. – mat
@mat, wenn ich versuche, dieses Paket (PDT-SWI) zu installieren Ich habe diesen Fehler: 'Fehler: [Thread pdt_console_client_0_Default Process] make_directory/1: Keine Berechtigung zum Erstellen von Verzeichnis c:/Programmdateien/swipl/pack '' (Berechtigung verweigert) 'auch ist es nicht Arbeit in sisctus –