summaryrefslogtreecommitdiff
path: root/prolog/problems/sorting/quick_sort_2
diff options
context:
space:
mode:
authorAleš Smodiš <aless@guru.si>2015-08-18 16:06:19 +0200
committerAleš Smodiš <aless@guru.si>2015-08-18 16:06:19 +0200
commit95e2fe57f6e4639f6ae9f1fef368829d5090dbf6 (patch)
tree462ba05eb0c4732ca1c97739548801258bf47b40 /prolog/problems/sorting/quick_sort_2
Exported all problems from the SQLite database into the new directory structure.
Diffstat (limited to 'prolog/problems/sorting/quick_sort_2')
-rw-r--r--prolog/problems/sorting/quick_sort_2/common.py24
-rw-r--r--prolog/problems/sorting/quick_sort_2/en.py12
2 files changed, 36 insertions, 0 deletions
diff --git a/prolog/problems/sorting/quick_sort_2/common.py b/prolog/problems/sorting/quick_sort_2/common.py
new file mode 100644
index 0000000..5eff940
--- /dev/null
+++ b/prolog/problems/sorting/quick_sort_2/common.py
@@ -0,0 +1,24 @@
+id = 125
+group = 'sorting'
+number = 32
+visible = True
+facts = None
+
+solution = '''\
+conc125([], L, L).
+conc125([H|T], L2, [H|L]) :-
+ conc125(T, L2, L).
+pivoting125(_, [], [], []).
+pivoting125(P, [H|T], [H|S], G) :-
+ H =< P,
+ pivoting125(P, T, S, G).
+pivoting125(P, [H|T], S, [H|G]) :-
+ H > P,
+ pivoting125(P, T, S, G).
+quick_sort([], []).
+quick_sort([Pivot|T], Sorted) :-
+ pivoting125(Pivot, T, Smaller, Greater),
+ quick_sort(Smaller, SortedSmaller),
+ quick_sort(Greater, SortedGreater),
+ conc125(SortedSmaller, [Pivot|SortedGreater], Sorted).
+'''
diff --git a/prolog/problems/sorting/quick_sort_2/en.py b/prolog/problems/sorting/quick_sort_2/en.py
new file mode 100644
index 0000000..b0d4ce1
--- /dev/null
+++ b/prolog/problems/sorting/quick_sort_2/en.py
@@ -0,0 +1,12 @@
+id = 125
+name = 'quick_sort/2'
+slug = 'sort a list using quicksort'
+
+description = '''\
+<p><code>quick_sort(L, SL)</code>: the list <code>SL</code> contains the elements of <code>L</code> sorted in non-decreasing order. Use the predicate <code>pivoting/4</code> to implement quicksort.</p>
+<pre>
+ ?- quick_sort([2,3,1,5,4], L).
+ L = [1,2,3,4,5].
+</pre>'''
+
+hint = {}