Sei sulla pagina 1di 2

Problema:

Tre amici hanno ottenuto il primo, il secondo e il terzo posto in un concorso.


1. Ognuno di loro ha nomi diversi, preferisce un altro sport e ha diverse nazionalità.
2. Michael preferisce il basket e ha un posto migliore di quello americano.
3. Simon è israeliano e ha un posto migliore del tennista.
4. Il giocatore di cricket è arrivato per primo.
Scrivi un programma in Prolog per rispondere alle seguenti domande: Chi è australiano,
israeliano, americano? Che sport preferisci un certo atleta?
p([[_,_,cricket,1],[_,_,_,2],[_,_,_,3]]).

appartiene(X, [X | _]).

appartiene(X, [_ | Resto]) :- appartiene(X, Resto).

classifiche(L) :- p(L),

appartiene([michael,_,baschet,A],L), appartiene([_,american,_,B],L),A<B,

appartiene([simon,israelian,_,C],L), appartiene([_,_,tenis,D],L),C<D,

appartiene([richard,_,_,_],L), appartiene([_,australian,_,_],L),!.

nazionalita(X,Y) :- classifiche (L),


appartiene([Y,X,_,_],L),!.

sport(X,Y) :- classifiche (L),

appartiene([X,_,Y,_],L),!.

p([[_,_,cricket,1],[_,_,_,2],[_,_,_,3]]).

Il predicato p viene utilizzato per creare la struttura dell'elenco.

appartiene(X, [X | _]).

appartiene(X, [_ | Rest]) :- appartiene(X, Rest).

Il predicatore appartiene per verificare se un elemento è o meno nella lista.

classifiche(L).

Il predicato classifiche contiene tutti i dati che conosciamo: Michael preferisce il basket, ecc.

nazionalita(X,Y).
Il predicato nazionalità ha due atomi: X che è input e conterrà la nazionalità e Y che è l'uscita in
cui restituirà il nome dell'atleta che corrisponde ai dati di nazionalità.
sport(X,Y).

Il predicato sport ha due atomi: X che è ingresso e conterrà il nome dell'atleta e Y che è l'uscita in
cui lo sport tornerà che l'atleta preferisce.

Chiediamo al prologo: qual è la classifica degli amici?

classifiche (Classifiche).

La risposta del Prolog sarà:

Classifiche = [[simon, israelian, cricket, 1], [michael, australian, baschet, 2], [richard, american,
tenis, 3]]

Chiediamo al prologo: che sport preferiva Simon?


sport(simon, Preferire).
La risposta del Prolog sarà:

Preferire = cricket

Chiediamo al prologo: chi è americano?


nazionalita(american, Chi).
La risposta del Prolog sarà:

Chi = richard

Potrebbero piacerti anche