From a73529969a6b98a0be142ee175cefef2999a29c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Arroyo=20Calle?= Date: Sat, 5 Dec 2020 14:20:50 +0100 Subject: [PATCH 1/3] Add max_list & min_list to lists --- src/lib/lists.pl | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/lib/lists.pl b/src/lib/lists.pl index e3033495..6638f137 100644 --- a/src/lib/lists.pl +++ b/src/lib/lists.pl @@ -2,7 +2,7 @@ memberchk/2, reverse/2, length/2, maplist/2, maplist/3, maplist/4, maplist/5, maplist/6, maplist/7, maplist/8, maplist/9, same_length/2, nth0/3, - sum_list/2, transpose/2, list_to_set/2]). + sum_list/2, transpose/2, list_to_set/2, max_list/2, min_list/2]). :- use_module(library(error)). @@ -200,3 +200,14 @@ nth0_search(N, N, [E|_], E). nth0_search(N0, N, [_|Es], E) :- N1 is N0 + 1, nth0_search(N1, N, Es, E). + + +max_list([Max], Max). +max_list([N|Ns], Max) :- + max_list(Ns, Maxs),!, + Max is max(N, Maxs). + +min_list([Min], Min). +min_list([N|Ns], Min) :- + min_list(Ns, Mins),!, + Min is min(N, Mins). \ No newline at end of file From 0cc9388af0df14cbab248a29963cd7158571920d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Arroyo=20Calle?= Date: Sun, 6 Dec 2020 17:31:42 +0100 Subject: [PATCH 2/3] Use foldl as PR feedback suggested --- src/lib/lists.pl | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/lib/lists.pl b/src/lib/lists.pl index 6638f137..1e35d40e 100644 --- a/src/lib/lists.pl +++ b/src/lib/lists.pl @@ -202,12 +202,15 @@ nth0_search(N0, N, [_|Es], E) :- nth0_search(N1, N, Es, E). -max_list([Max], Max). max_list([N|Ns], Max) :- - max_list(Ns, Maxs),!, - Max is max(N, Maxs). + foldl(max_list_, Ns, N, Max). + +max_list_(N, Max0, Max) :- + Max is max(N, Max0). -min_list([Min], Min). min_list([N|Ns], Min) :- - min_list(Ns, Mins),!, - Min is min(N, Mins). \ No newline at end of file + foldl(min_list_, Ns, N, Min). + +min_list_(N, Min0, Min) :- + Min is min(N, Min0). + From 0696a18e0b1ad35db846407b0ef3c5919c4d6ceb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Arroyo=20Calle?= Date: Sun, 6 Dec 2020 21:58:37 +0100 Subject: [PATCH 3/3] Change name to list_max, list_min as PR feedback --- src/lib/lists.pl | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/lib/lists.pl b/src/lib/lists.pl index 1e35d40e..a1acdb6d 100644 --- a/src/lib/lists.pl +++ b/src/lib/lists.pl @@ -2,7 +2,7 @@ memberchk/2, reverse/2, length/2, maplist/2, maplist/3, maplist/4, maplist/5, maplist/6, maplist/7, maplist/8, maplist/9, same_length/2, nth0/3, - sum_list/2, transpose/2, list_to_set/2, max_list/2, min_list/2]). + sum_list/2, transpose/2, list_to_set/2, list_max/2, list_min/2]). :- use_module(library(error)). @@ -202,15 +202,14 @@ nth0_search(N0, N, [_|Es], E) :- nth0_search(N1, N, Es, E). -max_list([N|Ns], Max) :- - foldl(max_list_, Ns, N, Max). +list_max([N|Ns], Max) :- + foldl(list_max_, Ns, N, Max). -max_list_(N, Max0, Max) :- +list_max_(N, Max0, Max) :- Max is max(N, Max0). -min_list([N|Ns], Min) :- - foldl(min_list_, Ns, N, Min). +list_min([N|Ns], Min) :- + foldl(list_min_, Ns, N, Min). -min_list_(N, Min0, Min) :- +list_min_(N, Min0, Min) :- Min is min(N, Min0). -