diff options
| -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. |