Co jest nie tak z kodem?

0

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

0

udało się rozwiązać to w prologu ?

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