% 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:"). % Известно, что тополь выше березы, которая выше липы. Клен ниже липы, а сосна % выше тополя и ниже ели. Определить самое высокое и самое низкое дерево. дерево(тополь). дерево(берёза). дерево(липа). дерево(сосна). дерево(ель). дерево(клён). выше(тополь, берёза). выше(берёза, липа). выше(сосна, тополь). ниже(клён, липа). ниже(сосна, ель). самое_высокое :- дерево(X), not(выше(_, X)), not(ниже(X, _)), writeln(X). самое_низкое :- дерево(X), not(выше(X, _)), not(ниже(_, X)), writeln(X). ?- write("Самое высокое дерево: "), самое_высокое. ?- write("Самое низкое дерево: "), самое_низкое. ?- 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.