КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Маскарад
Із наступних тверджень треба визначити прізвище кожного із хлопців (прізвище одного з них Финли) і хто в який костюм був одягнений.
3) Біллі живе за кілька будинків від них, але піратом був одягнений не він.
DOMAINS kid=kid(rstring,rstring,rstring) %tip-kid(imya,familiya,kostyum) nondeterm insert(rstring,slist,slist) CLAUSES member(H,[H|_]). %Якщо елемент є головою списку, %то він входить у список member(H,[_|Tail]):-member(H,Tail). %Якщо елемент входить у хвіст списку, то він входить і у список
%вбудований предикат злиття двох списків append([],B,B). %злиття порожнього списку із другим % дає другий список append([H|Tail],B,[H|NewTail]):-append(Tail,B,NewTail). %злиття списку із другим списком буде: голова % першого списку стає головою результату, % чиїм хвостом є результат злиття хвоста % першого списку із другим списком
імен
%XZ поділяють на початок (X) i кінець (Z), які можуть бути і % порожніми, потім зливають початок (X) з елементом Y та % отримане з кінцем (Z) append(Temp,Z,XYZ). %append(X,Z,XZ)означає, що % пролог сам відшукує всі можливі % значення X i Z такі, що результатом % їхнього злиття буде список XZ.
%перестановка елементів списку permute([H|Tail],Ans):- permute(Tail,Temp),insert(H,Temp,Ans). %перестановкою % непорожнього списку буде перестановка його % хвоста та вставка туди голови на довільне місце
surnames(List):-insert("Smit",["Finli","Finli"],Temp), insert("Dikson",Temp,List). insert("Dikson",Temp,List). insert("Finli",Temp,List). find(Solve):-Solve=[kid(N1,S1,K1),kid(N2,S2,K2), kid(N3,S3,K3),kid(N4,S4,K4)], names([N1,N2,N3,N4]), surnames([S1,S2,S3,S4]), suits([K1,K2,K3,K4]), % генеруються варіанти імен, прізвищ, костюмів дітей, далі перевірка, чи % однакові прізвища у Djimmi i Molli member(kid("Djimmi",SurnameDjim,_),Solve), member(kid("Molli",SurnameDjim,_),Solve), % жоден з них не є відьма або пірат
Дата добавления: 2014-01-04; Просмотров: 239; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |