Witam.
Mam takie zadanie do zrobienia na jutro. Może ktoś mi udzieli cennej wskazówki jak to rozwiązać?
Zadanie- Sześciu mężczyzn
Sześciu mężczyzn o różnych imionach (Andrzej, Dariusz, Mateusz, Michał, Tomasz,
Wojciech) posiada żony o różnych imionach (Agnieszka, Ewa, Róża, Ania, Alicja, Ola) oraz sześć różnych samochód (BMW, Fiat, Ford, Mercedes, Opel, Renault), o sześciu różnych kolorach (Biały, Czerwony, Granat, Zielony, Żółty, Szary). Każdy pracuje w innym miejscach pracy (Bank, Hotel, Politechnika, Restauracja, Sąd, Szpital) i ma inne hobby (Czytanie,Fotografia, Majsterkowanie, Pływanie, Rowery, Żeglarstwo).
Kto pracuje w szpitalu ? Jaki kolor ma Renault?
- Agnieszka i Andrzej są małżeństwem
- Ola ma czerwony samochód
- Renault jest zielony
- Właściciel Opla pracuje w restauracji
- Pracownik Politechniki lubi czytanie
- Wojciech pływa w wolnych chwilach
- Właściciel granatowego Forda lubi fotografować
- Tomasz jest właścicielem BMW
- Mąż Ewy lubi żeglarstwo
- Dariusz ma biały samochód
- Mąż Róży posiada Mercedesa
- Właściciel szarego auta pracuje w Sądzie
- Po lewej stronie pracownika banku mieszka właściciel fiata, a po prawej pasjonat
kolarstwa - Po lewej stronie pracownika hotelu mieszka właściciel granatowego samochodu, a z drugiej strony pracownik szpitala
- Michał mieszka na prawo od Ani, a na lewo od niej mieszka Mateusz
- Sąsiadem Alicji od lewej strony jest właściciel żółtego auta, a jego sąsiadem od lewej strony jest znany majsterkowicz
Wskazówka: utworzyć złożony term dom(Mezczyzna, Kobieta, Auto, Kolor, Praca, Hobby) oraz listę Ulica=[Dom1,Dom2,Dom3,Dom4,Dom5, Dom6] pokazującą położenie domów względem siebie.
Do tej pory miałem pomysł taki:
% Sprawdzenie, czy element Lewo znajduje się na lewo od elementu Prawo w liście.
na_lewo(Lewy,Prawy,[Lewy,Prawy|_]).
na_lewo(Lewy,Prawy,[_|Ogon]) :- na_lewo(Lewy,Prawy,Ogon).
% Sprawdzenie, czy elementy X i Y znajdują się obok siebie w liście Ulica.
obok(X,Y,Ulica) :- na_lewo(X,Y,Ulica).
obok(X,Y,Ulica) :- na_lewo(Y,X,Ulica).
rozwiazanie(Szukany,Szukany2) :-
Ulica=[[_, _, _, _, _, _], [_, _, _, _, _, _], [_, _, _, _, _, _], [_, _, _, _, _, _], [_, _, _, _, _, _], [_, _, _, _, _, _]],
% member(Mezczyzna, Kobieta, Auto, Kolor, Praca, Hobby)
% Agnieszka i Andrzej są małżeństwem
member([andrzej, agnieszka, _, _, _, _], Ulica),
% Ola ma czerwony samochód
member([_, ola, _, czerwony, _, _], Ulica),
% Renault jest zielony
member([_, _, renault, zielony, _, _], Ulica),
% Właściciel Opla pracuje w restauracji
member([_, _, opel, _, restauracja, _], Ulica),
% Pracownik Politechniki lubi czytanie
member([_, _, _, _, politechnika, czytanie], Ulica),
% Wojciech pływa w wolnych chwilach
member([_, _, ford, _, _, fotografia], Ulica),
% Właściciel granatowego Forda lubi fotografować
member([wojciech, _, _, _, _, plywanie], Ulica),
% Tomasz jest właścicielem BMW
member([tomasz, _, bmw, _, _, _], Ulica),
% Mąż Ewy lubi żeglarstwo
member([_, ewa, _, _, _, zeglarstwo], Ulica),
% Dariusz ma biały samochód
member([dariusz, _, _, bialy, _, _], Ulica),
% Mąż Róży posiada Mercedesa
member([_, roza, mercedes, _, _, _], Ulica),
% Właściciel szarego auta pracuje w Sądzie
member([_, _, _, szary, sad, _], Ulica),
% kolor renault poszukiwany?
member([_, _, renault, Szukany2, _, _], Ulica),
% Kto pracuje w szpitalu ?
member([Szukany, _, _, _, szpital, _], Ulica),
% Po lewej stronie pracownika banku mieszka właściciel fiata, a po prawej pasjonat kolarstwa
na_lewo([_, _, _, _, bank, _], [_, _, fiat, _, _, _], Ulica),
% a po prawej pasjonat kolarstwa
na_lewo([_, _, _, _, _, rowery], [_, _, _, _, bank, _], Ulica),
% Po lewej stronie pracownika hotelu mieszka właściciel granatowego samochodu,
na_lewo([_, _, _, _, hotel, _], [_, _, _, granat, _, _], Ulica),
% a z drugiej strony pracownik szpitala
na_lewo([_, _, _, _, szpital, _], [_, _, _, _, hotel, _], Ulica),
% Michał mieszka na prawo od Ani,
na_lewo([michal, _, _, _, _, _], [_, ania, _, _, _, _], Ulica),
% a na lewo od niej mieszka Mateusz
na_lewo([_, ania, _, _, _, _], [mateusz, _, _, _, _, _], Ulica),
% Sąsiadem Alicji od lewej strony jest właściciel żółtego auta,
na_lewo([_, alicja, _, _, _, _], [_, _, _, zolty, _, _], Ulica),
% a jego sąsiadem od lewej strony jest znany majsterkowicz
na_lewo([_, _, _, zolty, _, _], [_, _, _, _, _, majsterkowanie], Ulica).
Z góry dziękuje