From 791e22dc24dfa9548d358afedc9e42c272858072 Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Wed, 10 Jun 2020 22:25:23 -0600 Subject: [PATCH] eliminate unnecessary find_min_time_ predicate in least_time.pl example --- Cargo.lock | 28 ++++++++++++++++++++++++++-- src/prolog/examples/least_time.pl | 21 +++++++-------------- 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 17817926..086a638e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -125,6 +125,17 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" 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]] name = "cloudabi" version = "0.0.3" @@ -738,7 +749,9 @@ dependencies = [ [[package]] name = "prolog_parser" -version = "0.8.62" +version = "0.8.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa8dbe0881bcc9a247db279802701d87bbe9d4c6604bb0e5cad3dd3314f241d" dependencies = [ "lexical", "num-rug-adapter", @@ -930,9 +943,10 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "scryer-prolog" -version = "0.8.125" +version = "0.8.126" dependencies = [ "blake2", + "chrono", "cpu-time", "crossterm", "dirs", @@ -1094,6 +1108,16 @@ dependencies = [ "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]] name = "typenum" version = "1.12.0" diff --git a/src/prolog/examples/least_time.pl b/src/prolog/examples/least_time.pl index 100c68d5..b93f0b5e 100644 --- a/src/prolog/examples/least_time.pl +++ b/src/prolog/examples/least_time.pl @@ -11,11 +11,12 @@ */ :- module(least_time, [find_min_time/2, - write_time_nl/1]). + write_time_nl/1]). :- use_module(library(dcgs)). :- use_module(library(format)). +:- use_module(library(lists)). :- 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), ( maplist(=(true), [TH1, TH2, TM1, TM2]) -> ( H1 =:= 2 -> - ( H2 =< 3 -> - T = true - ; T = false - ) + ( H2 =< 3 -> + T = true + ; T = false + ) ; T = true ) ; T = false @@ -49,15 +50,7 @@ permuted_times(Time, PermutedTimes) :- find_min_time(Time, Min) :- valid_time(Time, true), - permuted_times(Time, PermutedTimes), - 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) - ). + permuted_times(Time, [Min|_]). write_time_nl(Time) :- -- 2.54.0