Prolog定义谓词

时间:2018-04-13 10:16:29

标签: prolog

定义一个谓词,通过递归地从分钟数减去60并递增小时数,将分钟数转换为相应的小时和分钟。使用该规则的一个示例是:

?- mins_to_hours_and_mins(124, H, M).
H=2 M=4

1 个答案:

答案 0 :(得分:-5)

尝试这个:)主要思想是通过从总时间减去60来累积谓词min中的小时数,当总时间低于60时,我们可以统计累计器的计数小时数与H变量和剩余时间用M变量。

minutes(X,H,M):-                     %main predicate
    min(X,0,H,M).

min(X,H,ResultH,ResultM):-           %ending condition of recursion
    X<60,
    ResultH is H,                    %unification with counted hours
    ResultM is X.

min(X,H,ResultM,ResultH):-           %recursive predicate
    X >= 60,
    X2 is X-60, H2 is H+1,           %subtracting from total time
    min(X2,H2,ResultM,ResultH).