Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,44 @@
|
|||
:- use_module(library(clpfd)).
|
||||
|
||||
% helper to perform the operation with just a number.
|
||||
compound_time(N) :-
|
||||
times(N, R),
|
||||
format('~p: ', N),
|
||||
write_times(R).
|
||||
|
||||
% write out the results in the 'special' format.
|
||||
write_times([[Tt, Val]|T]) :-
|
||||
dif(T, []),
|
||||
format('~w ~w, ', [Val, Tt]),
|
||||
write_times(T).
|
||||
write_times([[Tt, Val]|[]]) :-
|
||||
format('~w ~w~n', [Val, Tt]).
|
||||
|
||||
|
||||
% this predicate is the main predicate, it takes either N
|
||||
% or a list of split values to get N, or both.
|
||||
times(N, R) :-
|
||||
findall(T, time_type(T,_), TTs),
|
||||
times(TTs, N, R).
|
||||
|
||||
% do the split, if there is a 1 or greater add to a list of results.
|
||||
times([], _, []).
|
||||
times([Tt|T], N, Rest) :-
|
||||
time_type(Tt, Div),
|
||||
Val #= N // Div,
|
||||
Val #< 1,
|
||||
times(T, N, Rest).
|
||||
times([Tt|T], N, [[Tt,Val]|Rest]) :-
|
||||
time_type(Tt, Div),
|
||||
Val #= N // Div,
|
||||
Val #>= 1,
|
||||
Rem #= N mod Div,
|
||||
times(T, Rem, Rest).
|
||||
|
||||
|
||||
% specifify the different time split types
|
||||
time_type(wk, 60 * 60 * 24 * 7).
|
||||
time_type(d, 60 * 60 * 24).
|
||||
time_type(hr, 60 * 60).
|
||||
time_type(min, 60).
|
||||
time_type(sec, 1).
|
||||
Loading…
Add table
Add a link
Reference in a new issue