Entry 3390
Lab_3
Submitted by anonymous
on March 21, 2010 at 3 p.m.
Language: Prolog. Code size: 3.4 KB.
% Лабораторна робота № 3 належить(X, [X|_]). належить(X, [_|Tail]) :- належить(X, Tail). належить2(X, [X|_]) :- !. належить2(X, [_|Tail]) :- належить2(X, Tail). конк([], L, L). конк([X|Tail1], L, [X|Tail2]) :- конк(Tail1, L, Tail2). додати(X, L, [X|L]). видалити(X, [X|Tail], Tail). видалити(X, [Y|Tail1], [Y|Tail2]) :- видалити(X, Tail1, Tail2). підсписок(S, L) :- конк(Temp, _, L), конк(_, S, Temp). обернений([], []). обернений([X|Tail], L) :- обернений(Tail, L1), конк(L1, [X], L). всі_різні([]). всі_різні([X|Tail]) :- not(належить(X, Tail)), всі_різні(Tail). перестановка([], []). перестановка([X|L], P) :- перестановка(L, L1), видалити(X, P, L1). довжина([], 0). довжина([_|Tail], N) :- довжина(Tail, N1), N is N1+1. розділити([], _, [], []). розділити([X|Tail1], Y, [X|Tail2], Greater) :- X<Y, !, розділити(Tail1, Y, Tail2, Greater). розділити([X|Tail1], Y, Lesser, [X|Tail3]) :- розділити(Tail1, Y, Lesser, Tail3). сорт([], []). сорт([X|Tail], Sorted) :- розділити(Tail, X, Lesser, Greater), сорт(Lesser, LessSorted), сорт(Greater, GreatSorted), конк(LessSorted, [X|GreatSorted], Sorted). підмножина([], _). підмножина([X|Xs], Ys) :- належить(X, Ys), підмножина(Xs, Ys ). розмалювати([Country-Neighbours|RestOfMap],Palette) :- видалити(Country, Palette, Palette1), підмножина(Neighbours, Palette1), розмалювати(RestOfMap, Palette). розмалювати([], _). % Самостійна робота замінити(_, _, [], []). замінити(X, Y, [X|T], [Y|T]). замінити(X, Y, [H|T1], [H|T2]) :- H =\= X, замінити(X, Y, T1, T2). прорахувати([], []). прорахувати([H|T], [Hr|Tr]) :- H > 0, Hr is H+1, прорахувати(T, Tr). прорахувати([H|T], [Hr|Tr]) :- H < 0, Hr is H-1, прорахувати(T, Tr). прорахувати([0|T], [0|Tr]) :- прорахувати(T, Tr). % Лабораторна робота № 4 місця([1, 2, 3]). сформувати(Petro, Mykola, Oleksiy) :- місця(Places), видалити(Petro, Places, PlacesRest1), видалити(Mykola, PlacesRest1, PlacesRest2), видалити(Oleksiy, PlacesRest2, _). перевірити(Petro, Mykola, _) :- not(Petro=2), not(Petro=3), not(Mykola=3). сказав(лицар, Sent) :- Sent. сказав(брехун, Sent) :- not(Sent). види([лицар, брехун]). сформувати2(A, B, C) :- види(L), належить(A, L), належить(B, L), належить(C, L). перевірити2(A, B, C) :- сказав(B, сказав(A, A=брехун)), сказав(C, B=брехун). напис1(принцеса, тигр). напис2(принцеса, тигр). напис2(тигр, принцеса). види3([принцеса, тигр]). сформувати3(First, Second) :- види3(L), належить(First, L), належить(Second, L). перевірити3(First, Second) :- напис1(First, Second), not(напис2(First, Second)). перевірити3(First, Second) :- not(напис1(First, Second)), напис2(First, Second). розвязок(P) :- перестановка([1,2,3,4,5,6], P), безпечна([1,2,3,4,5,6], P). безпечна([], []). безпечна([X|Xs], [Y|Ys]) :- не_атакує(X, Y, Xs, Ys), безпечна(Xs, Ys). не_атакує(_, _, [], []). не_атакує(X, Y, [X1|Xs], [Y1|Ys]) :- Y =\= Y1, Y1-Y =\= X1-X, Y1-Y =\= X-X1, не_атакує(X, Y, Xs, Ys). % Самостійна робота напис1_4(принцеса, _). напис1_4(_, принцеса). напис2_4(_, тигр). види4([принцеса, тигр]). сформувати4(First, Second) :- види4(L), належить(First, L), належить(Second, L). перевірити4(First, Second) :- напис1_4(First, Second), напис2_4(First, Second). перевірити4(First, Second) :- not(напис1_4(First, Second)), not(напис2_4(First, Second)).
This snippet took 0.03 seconds to highlight.
Back to the Entry List or Home.