eliminate unnecessary find_min_time_ predicate in least_time.pl example

This commit is contained in:
Mark Thom
2020-06-10 22:25:23 -06:00
parent c82a0b3d2d
commit 791e22dc24
2 changed files with 33 additions and 16 deletions

28
Cargo.lock generated
View File

@@ -125,6 +125,17 @@ version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
[[package]]
name = "chrono"
version = "0.4.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "80094f509cf8b5ae86a4966a39b3ff66cd7e2a3e594accec3743ff3fabeab5b2"
dependencies = [
"num-integer",
"num-traits 0.2.11",
"time",
]
[[package]] [[package]]
name = "cloudabi" name = "cloudabi"
version = "0.0.3" version = "0.0.3"
@@ -738,7 +749,9 @@ dependencies = [
[[package]] [[package]]
name = "prolog_parser" name = "prolog_parser"
version = "0.8.62" version = "0.8.63"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fa8dbe0881bcc9a247db279802701d87bbe9d4c6604bb0e5cad3dd3314f241d"
dependencies = [ dependencies = [
"lexical", "lexical",
"num-rug-adapter", "num-rug-adapter",
@@ -930,9 +943,10 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
[[package]] [[package]]
name = "scryer-prolog" name = "scryer-prolog"
version = "0.8.125" version = "0.8.126"
dependencies = [ dependencies = [
"blake2", "blake2",
"chrono",
"cpu-time", "cpu-time",
"crossterm", "crossterm",
"dirs", "dirs",
@@ -1094,6 +1108,16 @@ dependencies = [
"winapi 0.3.8", "winapi 0.3.8",
] ]
[[package]]
name = "time"
version = "0.1.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
dependencies = [
"libc",
"winapi 0.3.8",
]
[[package]] [[package]]
name = "typenum" name = "typenum"
version = "1.12.0" version = "1.12.0"

View File

@@ -11,11 +11,12 @@
*/ */
:- module(least_time, [find_min_time/2, :- module(least_time, [find_min_time/2,
write_time_nl/1]). write_time_nl/1]).
:- use_module(library(dcgs)). :- use_module(library(dcgs)).
:- use_module(library(format)). :- use_module(library(format)).
:- use_module(library(lists)).
:- use_module(library(reif)). :- use_module(library(reif)).
@@ -32,10 +33,10 @@ valid_time([H1,H2,M1,M2], T) :-
memberd_t(M2, [0,1,2,3,4,5,6,7,8,9], TM2), memberd_t(M2, [0,1,2,3,4,5,6,7,8,9], TM2),
( maplist(=(true), [TH1, TH2, TM1, TM2]) -> ( maplist(=(true), [TH1, TH2, TM1, TM2]) ->
( H1 =:= 2 -> ( H1 =:= 2 ->
( H2 =< 3 -> ( H2 =< 3 ->
T = true T = true
; T = false ; T = false
) )
; T = true ; T = true
) )
; T = false ; T = false
@@ -49,15 +50,7 @@ permuted_times(Time, PermutedTimes) :-
find_min_time(Time, Min) :- find_min_time(Time, Min) :-
valid_time(Time, true), valid_time(Time, true),
permuted_times(Time, PermutedTimes), permuted_times(Time, [Min|_]).
find_min_time_(PermutedTimes, Time, Min).
find_min_time_([], Min, Min).
find_min_time_([Time|Times], MinSoFar, Min) :-
( Time @< MinSoFar ->
find_min_time_(Times, Time, Min)
; find_min_time_(Times, MinSoFar, Min)
).
write_time_nl(Time) :- write_time_nl(Time) :-