Zagadka w prologu

Odpowiedz Nowy wątek
2016-12-15 20:46

Rejestracja: 3 lata temu

Ostatnio: 3 lata temu

0

Witam,
Mam takie zadanie do rozwiązania w Prologu:
Sześciu mężczyzn o różnych imionach (Andrzej, Dariusz, Mateusz, Michał, Tomasz, Wojciech)
jest żonatych z kobietami o różnych imionach (Agnieszka, Ewa, Róża, Ania, Alicja,
Ola)1 oraz posiada sześć różnych samochodów (BMW, Fiat, Ford, Mercedes, Opel, Renault)
w sześciu różnych kolorach (biały, czerwony, granat, zielony, żółty, szary). Każdy
pracuje w innym miejscu pracy (bank, hotel, politechnika, restauracja, sąd, szpital) i ma
inne hobby(czytanie, fotografia, majsterkowanie, pływanie, rowery, żeglarstwo).
Wiedząc, że
• Agnieszka i Andrzej są małżeństwem.
• Ola ma czerwony samochód.
• Fiat 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.
odpowiedz na pytania
• Kto pracuje w szpitalu?
• Jaki Kolor ma Renault?

Udało mi się napisać coś takiego:

% 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 Domy.
obok(X,Y,Domy) :- na_lewo(X,Y,Domy).
obok(X,Y,Domy) :- na_lewo(Y,X,Domy).    

% Rozwiązanie zagadki.
rozwiazanie(Szukany) :-
    %Sześciu mężczyzn o różnych imionach (Andrzej, Dariusz, Mateusz, Michał, Tomasz, Wojciech)
    %jest żonatych z kobietami o różnych imionach (Agnieszka, Ewa, Róża, Ania, Alicja,
    %Ola) oraz posiada sześć różnych samochodów (BMW, Fiat, Ford, Mercedes, Opel, Renault)
    %w sześciu różnych kolorach (biały, czerwony, granat, zielony, żółty, szary). Każdy
    %pracuje w innym miejscu pracy (bank, hotel, politechnika, restauracja, sąd, szpital) i ma
    %inne hobby(czytanie, fotografia, majsterkowanie, pływanie, rowery, żeglarstwo).

    % [imiemezczyzny,imiekobiety,samochod,kolorsamochodu,praca,hobby].
    Domy = [[1,_,_,_,_,_,_],[2,_,_,_,_,_,_],[3,_,_,_,_,_,_],[4,_,_,_,_,_,_],[5,_,_,_,_,_,_],[6,_,_,_,_,_,_]].
    % Agnieszka i Andrzej są małżeństwem.
    member([_,andrzej,agnieszka,_,_,_,_],Domy).
    % Ola ma czerwony samochód.
    member([_,_,ola,_,czerwony,_,_],Domy).
    % Fiat jest zielony.
    member([_,_,_,fiat,zielony,_,_],Domy).
    % Właściciel Opla pracuje w restauracji.
    member([_,_,_,opel,_,restauracja,_],Domy).
    % Pracownik politechniki lubi czytanie.

    member([_,_,_,_,_,politechnika,czytanie],Domy).
    % Wojciech pływa w wolnych chwilach.
    member([_,wojciech,_,_,_,_,plywanie],Domy).
    % Właściciel granatowego Forda lubi fotografować
    member([_,_,_,ford,granatowy,_,fotografowanie],Domy).
    % Tomasz jest właścicielem BMW.
    member([_,tomasz,_,bmw,_,_,_],Domy).
    % Mąż Ewy lubi żeglarstwo
    member([_,_,ewa,_,_,_,zeglarstwo],Domy).
    % Dariusz ma biały samochód.

    member([_,dariusz,_,_,bialy,_,_],Domy).
    % Mąż Róży posiada Mercedesa
    member([_,_,roza,mercedes,_,_,_],Domy).
    % Właściciel szarego auta pracuje w sądzie.
    member([_,_,_,_,szary,sad,_],Domy).
    % Po lewej stronie pracownika banku mieszka właściciel fiata, 
    % a po prawej pasjonat kolarstwa.
    na_lewo([_,_,_,_,_,bank,_],[_,_,_,fiat,_,_,_],Domy).
    na_lewo([_,_,_,_,_,_,rowery],[_,_,_,_,_,bank,_],Domy).
    % Po lewej stronie pracownika hotelu mieszka właściciel granatowego samochodu, 
    % a z drugiej strony pracownik szpitala
    na_lewo([_,_,_,_,_,hotel,_],[_,_,_,_,granatowy,_,_],Domy).
    na_lewo([_,_,_,_,_,szpital,_],[_,_,_,_,_,hotel,_],Domy).
    % Michał mieszka na prawo od Ani, 
    % a na lewo od niej mieszka Mateusz
    na_lewo([_,michal,_,_,_,_,_],[_,_,ania,_,_,_,_],Domy).
    na_lewo([_,_,ania,_,_,_,_],[_,mateusz,_,_,_,_,_],Domy).
    % Sąsiadem Alicji od lewej strony jest właściciel żółtego auta, 
    % a jego sąsiadem od lewej strony jest znany majsterkowicz.

    obok([_,_,alicja,_,_,_,_],[_,_,_,_,zolty,_,_],Domy).
    obok([_,_,_,_,zolty,_,_],[_,_,_,_,_,_,majsterkowanie],Domy).
    % Szukamy kto pracuje w szpitalu.
    member([_,Szukany,_,_,_,szpital,_],Domy).

Jednak nie rozwiązują one zagadki. Widzi ktoś błąd? Z góry dziękuję za pomoc

edytowany 2x, ostatnio: baza993, 2016-12-16 10:56

Pozostało 580 znaków

Mia
2017-01-07 21:36
Mia
0

nie wiem czy to jest błąd ale w Domy Brakuje nawiasu przed 1 i po 6.

Pozostało 580 znaków

Mia
2017-01-07 21:40
Mia
0

:

nie wiem czy to jest błąd ale w Domy Brakuje nawiasu przed 1 i po 6.

% Po lewej stronie pracownika banku mieszka właściciel fiata,
% a po prawej pasjonat kolarstwa.

Czy to nie powinno być odwrotnie czyli banm pop rawej a fiat po lewej

Pozostało 580 znaków

Odpowiedz

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