summaryrefslogtreecommitdiff
path: root/prolog/problems/clp_fd/gcd_3
diff options
context:
space:
mode:
Diffstat (limited to 'prolog/problems/clp_fd/gcd_3')
-rw-r--r--prolog/problems/clp_fd/gcd_3/common.py16
-rw-r--r--prolog/problems/clp_fd/gcd_3/en.py13
2 files changed, 29 insertions, 0 deletions
diff --git a/prolog/problems/clp_fd/gcd_3/common.py b/prolog/problems/clp_fd/gcd_3/common.py
new file mode 100644
index 0000000..8ab99ef
--- /dev/null
+++ b/prolog/problems/clp_fd/gcd_3/common.py
@@ -0,0 +1,16 @@
+id = 149
+group = 'clp_fd'
+number = 61
+visible = True
+facts = None
+
+solution = '''\
+cd(X, Y, CD):-
+ X #= _ * CD,
+ Y #= _ * CD,
+ indomain(CD).
+
+gcd(X, Y, GCD):-
+ cd(X, Y, GCD),
+ \+ ( cd(X, Y, CD), CD > GCD ).
+'''
diff --git a/prolog/problems/clp_fd/gcd_3/en.py b/prolog/problems/clp_fd/gcd_3/en.py
new file mode 100644
index 0000000..6d64602
--- /dev/null
+++ b/prolog/problems/clp_fd/gcd_3/en.py
@@ -0,0 +1,13 @@
+id = 149
+name = 'gcd/3'
+slug = 'greatest common divisor'
+
+description = '''\
+<p><code>gcd(X, Y, GCD)</code>: <code>GCD</code> is the greatest common divisor of <code>X</code> and <code>Y</code>. Implement this predicate using constraints.</p>
+<p>Hint: try writing a predicate to find <em>all</em> common divisors of two numbers first.</p>
+<pre>
+ ?- gcd(36, 84, GCD).
+ GCD = 12.
+</pre>'''
+
+hint = {}