From 29b2d280b9597e0b7c62c78f54304f2ecaf98a5d Mon Sep 17 00:00:00 2001 From: Alex Huddleston Date: Sat, 11 Nov 2017 21:08:10 -0600 Subject: [PATCH] Problem 1 finished. Problem 2 initialized. --- hw3/hw3pr1.pl | 25 +++++++++++++++++++++++++ hw3/hw3pr2.pl | 25 +++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 hw3/hw3pr1.pl create mode 100644 hw3/hw3pr2.pl diff --git a/hw3/hw3pr1.pl b/hw3/hw3pr1.pl new file mode 100644 index 0000000..c3fce50 --- /dev/null +++ b/hw3/hw3pr1.pl @@ -0,0 +1,25 @@ +my_sort([], Sorted2, Sorted2). + +my_sort(Unsorted, Sorted, Sorted2) :- + get_max(Unsorted, Max, LessList), + append(Sorted, [Max], NewSorted), + my_sort(LessList, NewSorted, Sorted2). + +my_sort(Unsorted, Sorted) :- + my_sort(Unsorted, [], ReverseSorted), + reverse(ReverseSorted, Sorted), + write(Sorted). + +get_max([], Max, LessList, Max, LessList). + +get_max(Unsorted, X, Unsorted2, Max, LessList) :- + select(Y, Unsorted, Rest), + (X > Y, + append(Unsorted2, [Y], NewList), + get_max(Rest, X, NewList, Max, LessList); + append(Unsorted2, [X], NewList), + get_max(Rest, Y, NewList, Max, LessList)). + +get_max(Unsorted, Max, LessList) :- + select(X, Unsorted, Unsorted2), + get_max(Unsorted2, X, [], Max, LessList). diff --git a/hw3/hw3pr2.pl b/hw3/hw3pr2.pl new file mode 100644 index 0000000..c3fce50 --- /dev/null +++ b/hw3/hw3pr2.pl @@ -0,0 +1,25 @@ +my_sort([], Sorted2, Sorted2). + +my_sort(Unsorted, Sorted, Sorted2) :- + get_max(Unsorted, Max, LessList), + append(Sorted, [Max], NewSorted), + my_sort(LessList, NewSorted, Sorted2). + +my_sort(Unsorted, Sorted) :- + my_sort(Unsorted, [], ReverseSorted), + reverse(ReverseSorted, Sorted), + write(Sorted). + +get_max([], Max, LessList, Max, LessList). + +get_max(Unsorted, X, Unsorted2, Max, LessList) :- + select(Y, Unsorted, Rest), + (X > Y, + append(Unsorted2, [Y], NewList), + get_max(Rest, X, NewList, Max, LessList); + append(Unsorted2, [X], NewList), + get_max(Rest, Y, NewList, Max, LessList)). + +get_max(Unsorted, Max, LessList) :- + select(X, Unsorted, Unsorted2), + get_max(Unsorted2, X, [], Max, LessList).