summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Guschin <guschin@altlinux.org>2024-05-07 23:59:39 +0400
committerAndrew Guschin <guschin@altlinux.org>2024-05-07 23:59:39 +0400
commitf143ac9ad56709b6a1538d45735b7f638be93512 (patch)
tree81855031493692802322f56cc0f2b5bf19c934e7
parent4b77dfe51d9d00de87eaf7428bed369723985a30 (diff)
wip: задание 5
-rw-r--r--task5.pro67
1 files changed, 67 insertions, 0 deletions
diff --git a/task5.pro b/task5.pro
new file mode 100644
index 0000000..7d287be
--- /dev/null
+++ b/task5.pro
@@ -0,0 +1,67 @@
+% vim:set syntax=prolog:
+
+?- writeln("Задание 1:").
+имя1(витя).
+имя1(юра).
+имя1(миша).
+
+слева(миша, юра).
+слева(витя, миша).
+
+порядок(X, Y, Z) :- имя1(X), имя1(Y), имя1(Z), слева(X, Y), слева(Y, Z).
+?- порядок(X, Y, Z), writeln("Они сидели в следуюещем порядке:"),
+ write(X), write(' '), write(Y), write(' '), writeln(Z).
+
+?- nl, nl, writeln("Задание 2:").
+
+% Известно, что тополь выше березы, которая выше липы. Клен ниже липы, а сосна
+% выше тополя и ниже ели. Определить самое высокое и самое низкое дерево.
+
+дерево(тополь).
+дерево(берёза).
+дерево(липа).
+дерево(сосна).
+дерево(ель).
+дерево(клён).
+
+выше(тополь, берёза).
+выше(берёза, липа).
+выше(сосна, тополь).
+
+ниже(клён, липа).
+ниже(сосна, ель).
+
+% выше2(X, Y) :- выше(X, Y); ниже(Y, X); выше(X, Y1), выше2(Y1, Y); ниже(Y1, X), выше2(Y1, Y).
+выше2(X, Y) :- выше(X, Y); ниже(Y, X).
+
+самое_высокое(X) :- дерево(X), forall((дерево(Y), not(Y = X)), выше2(X, Y)).
+
+?- самое_высокое(X), writeln(X).
+
+
+?- nl, nl, writeln("Задание 4:").
+
+имя4(белокуров).
+имя4(рыжов).
+имя4(чернов).
+
+волосы(блондин).
+волосы(брюнет).
+волосы(рыжий).
+
+соответствие4(X, Y) :- имя4(X), X = белокуров, волосы(Y), not(Y = брюнет), not(Y = блондин).
+соответствие4(X, Y) :- имя4(X), X = рыжов, волосы(Y), not(Y = рыжий).
+соответствие4(X, Y) :- имя4(X), X = чернов, волосы(Y), not(Y = брюнет).
+
+решение4(X1, Y1, X2, Y2, X3, Y3) :-
+ X1 = белокуров, соответствие4(X1, Y1),
+ X2 = рыжов, соответствие4(X2, Y2),
+ X3 = чернов, соответствие4(X3, Y3),
+ not(Y1 = Y2), not(Y2 = Y3), not(Y1 = Y3).
+
+?- решение4(X1, Y1, X2, Y2, X3, Y3),
+ write(X1), write(" - "), writeln(Y1),
+ write(X2), write(" - "), writeln(Y2),
+ write(X3), write(" - "), writeln(Y3).
+
+% ?- halt.