summaryrefslogtreecommitdiff
path: root/prolog/problems/old_exams/pascal_3
diff options
context:
space:
mode:
Diffstat (limited to 'prolog/problems/old_exams/pascal_3')
-rw-r--r--prolog/problems/old_exams/pascal_3/common.py16
-rw-r--r--prolog/problems/old_exams/pascal_3/en.py26
2 files changed, 42 insertions, 0 deletions
diff --git a/prolog/problems/old_exams/pascal_3/common.py b/prolog/problems/old_exams/pascal_3/common.py
new file mode 100644
index 0000000..7fcb55e
--- /dev/null
+++ b/prolog/problems/old_exams/pascal_3/common.py
@@ -0,0 +1,16 @@
+id = 179
+group = 'old_exams'
+number = 86
+visible = False
+facts = None
+
+solution = '''\
+pascal(_, 0, 1) :- !.
+pascal(I, I, 1) :- !.
+pascal(I, J, N) :-
+ I1 is I - 1,
+ J1 is J - 1,
+ pascal(I1, J, N1),
+ pascal(I1, J1, N2),
+ N is N1 + N2.
+'''
diff --git a/prolog/problems/old_exams/pascal_3/en.py b/prolog/problems/old_exams/pascal_3/en.py
new file mode 100644
index 0000000..31a0d47
--- /dev/null
+++ b/prolog/problems/old_exams/pascal_3/en.py
@@ -0,0 +1,26 @@
+id = 179
+name = 'pascal/3'
+slug = 'pascal's triangle'
+
+description = '''\
+<p>The first five rows of the Pascal's triangle look like this:</p>
+<pre>
+ 1
+ 1 1
+ 1 2 1
+ 1 3 3 1
+ 1 4 6 4 1
+</pre>
+<p>
+Each row begins and ends with 1. Every other element can be obtained as a sum of the two values above it. Write the predicate <code>pascal(I,J,N)</code> that returns the <code>J</code>-th value in the <code>I</code>-th column of the Pascal's triangle. Your solution should return exactly one answer for any input (the <code>I</code> and <code>J</code> arguments start counting with 0; you can assume that 0 ≤ <code>J</code> ≤ <code>I</code>).
+
+<pre>
+ ?- pascal(0, 0, N).
+ N = 1.
+ ?- pascal(2, 1, N).
+ N = 2.
+ ?- pascal(4, 3, N).
+ N = 4.
+</pre>'''
+
+hint = {}