summaryrefslogtreecommitdiff
path: root/prolog/problems/sets/union_3
diff options
context:
space:
mode:
Diffstat (limited to 'prolog/problems/sets/union_3')
-rw-r--r--prolog/problems/sets/union_3/common.py19
-rw-r--r--prolog/problems/sets/union_3/en.py12
2 files changed, 31 insertions, 0 deletions
diff --git a/prolog/problems/sets/union_3/common.py b/prolog/problems/sets/union_3/common.py
new file mode 100644
index 0000000..a219673
--- /dev/null
+++ b/prolog/problems/sets/union_3/common.py
@@ -0,0 +1,19 @@
+id = 128
+group = 'sets'
+number = 35
+visible = True
+facts = None
+
+solution = '''\
+memb128(X, [X|_]).
+memb128(X, [_|T]) :-
+ memb128(X, T).
+
+union([], S2, S2).
+union([H|T], S2, [H|U]) :-
+ \+ memb128(H, S2),
+ union(T, S2, U).
+union([H|T], S2, U) :-
+ memb128(H, S2),
+ union(T, S2, U).
+'''
diff --git a/prolog/problems/sets/union_3/en.py b/prolog/problems/sets/union_3/en.py
new file mode 100644
index 0000000..8257415
--- /dev/null
+++ b/prolog/problems/sets/union_3/en.py
@@ -0,0 +1,12 @@
+id = 128
+name = 'union/3'
+slug = 'find the union of two sets'
+
+description = '''\
+<p><code>union(S1, S2, U)</code>: the list <code>U</code> contains all elements of <code>S1</code> and <code>S2</code>, with no duplicates.</p>
+<pre>
+ ?- union([1,5,2,3], [3,4,8,2], U).
+ U = [1,5,3,4,8,2].
+</pre>'''
+
+hint = {}