diff options
| author | Andrew Guschin <guschin@altlinux.org> | 2024-05-07 12:59:07 +0400 |
|---|---|---|
| committer | Andrew Guschin <guschin@altlinux.org> | 2024-05-07 12:59:07 +0400 |
| commit | 4b77dfe51d9d00de87eaf7428bed369723985a30 (patch) | |
| tree | ea9225f06dbeba2b869d5d90ae8f75af48eb1e4b | |
| parent | a3355a8acebf69f85e66927874f4b78092e307e4 (diff) | |
Задание 4
| -rw-r--r-- | task4.pro | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/task4.pro b/task4.pro new file mode 100644 index 0000000..ac9199e --- /dev/null +++ b/task4.pro @@ -0,0 +1,35 @@ +% vim:set syntax=prolog: + +?- writeln("Задание 1:"). +pow(0, 0, 0) :- writeln("0^0 не определён"), !. +pow(_, 0, 1) :- !. +pow(0, _, 0) :- !. +pow(X, N, Res) :- N1 is N - 1, pow(X, N1, Res1), Res is Res1 * X. + +?- write("2^5 = "), pow(2, 5, P), writeln(P). +?- write("0^5 = "), pow(0, 5, P), writeln(P). +?- write("0^0 = "), pow(0, 0, P), writeln(P). + +?- nl, nl, writeln("Задание 2:"). +fib(1, 0) :- !. +fib(2, 1) :- !. +fib(N, F) :- N2 is N - 2, N1 is N - 1, fib(N2, F2), fib(N1, F1), F is F1 + F2. + +?- fib(10, F), writeln(F). + +?- nl, nl, writeln("Задание 3:"). + +hanoi(N) :- move(N, 'A', 'C', 'B'). + +move(1, A, C, _) :- + write('Переместить диск с вершины '), write(A), write(' на '), write(C), nl. +move(N, A, C, B) :- + N > 1, + M is N - 1, + move(M, A, B, C), + move(1, A, C, _), + move(M, B, C, A). + +?- hanoi(3). + +% ?- halt. |