diff options
| -rw-r--r-- | task5.pro | 67 |
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. |