Zadania w Prologu

0

Witam właśnie zaczynam swoją przygodę z prologiem i jeszcze nie za bardzo kumam tego języka dlatego prosiłbym o pomoc bo nie wiem jak przenieść te zadania na kod.

  1. W ogrodzie siedziały cztery pary narzeczonych i zajadały śliwki. Andzia zjadła 2 śliwki, Beata — 3, Celina — 4, Danusia — 5. Ich narzeczeni również nie próżnowali. Andrzej zjadł tyle, co jego narzeczona, Bogumił 2 razy tyle, co jego narzeczona, Cezary 3 razy tyle co jego narzeczona, wreszcie Damian 4 razy tyle, co jego narzeczona. Wszyscy razem zjedli 44 śliwki.
    Napisz w Prologu predykat (lub kilka), dzięki którym dowiesz się, kto z kim jest zaręczony i kto zjadł ile śliwek.

  2. Trzech pracowników naukowych (wśród nich dokładnie jedna kobieta): chemik — p. Siwek, humanista — p. Czarnota i historyk — p. Blond, siedzi przy stole i rozmawia.
    — Czy nie jest to dziwne — zauważa kobieta (nie blondynka!) — że nasze nazwiska brzmią Czarnota, Blond i Siwek, i ze jeden z nas ma włosy czarne, drugi blond, trzeci siwe?
    — To prawda — powiedziała osoba mająca włosy czarne — ale nie mniej ciekawe, ze nazwisko żadnego z nas nie odpowiada kolorowi jego włosów.
    — Istotnie! — wykrzyknął p. Siwek.
    Napisz w Prologu predykat (lub kilka), dzięki którym dowiesz się, jak nazywa się kobieta i jaki ma kolor włosów.

3

Weź się gościu w garść i to zadanie mógłbyś chociaż zrobić a nie liczyć na innych. Ono nie jest wcale trudne. A Doktor Janusz B. na pewno to doceni.

2

Niech doktor Janusz B. mi wybaczy, dla przyjemności zrobiłem jedno zadanie :<

jestem_leniem(a, 2).
jestem_leniem(b, 3).
jestem_leniem(c, 4).
jestem_leniem(d, 5).

oszukuje_innych(E, [E|_]).
oszukuje_innych(E, [_|Xs]) :- oszukuje_innych(E, Xs).

nie_znam_prologa(X, [X|Xs], Xs).
nie_znam_prologa(X, [Y|Xs], [Y|Q]) :- nie_znam_prologa(X, Xs, Q).

szukam_jelenia([], []).
szukam_jelenia([L|Xs], K) :-
	oszukuje_innych(L, K),
	nie_znam_prologa(L, K, K2),
	szukam_jelenia(Xs, K2).

wymagam_gotowca(A, B, C, D) :-
	szukam_jelenia([A, B, C, D], [a, b, c, d]),
	jestem_leniem(A, An),
	jestem_leniem(B, Bn),
	jestem_leniem(C, Cn),
	jestem_leniem(D, Dn),
	An*2 + Bn*3 + Cn*4 + Dn*5 =:= 44.

... + małe QuickReplace na koniec. Domyślanie się do robi każdy predykat to będzie dobre ćwiczenie :>

1 użytkowników online, w tym zalogowanych: 0, gości: 1