Il 0% ha trovato utile questo documento (0 voti)
94 visualizzazioni2 pagine

Classifiche

Il documento descrive un problema logico con tre amici che hanno vinto premi in un concorso. Fornisce indizi sulle loro nazionalità, preferenze sportive e posizioni. Viene quindi scritto un programma Prolog per dedurre queste informazioni.

Caricato da

DimaMuchi
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato DOCX, PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
94 visualizzazioni2 pagine

Classifiche

Il documento descrive un problema logico con tre amici che hanno vinto premi in un concorso. Fornisce indizi sulle loro nazionalità, preferenze sportive e posizioni. Viene quindi scritto un programma Prolog per dedurre queste informazioni.

Caricato da

DimaMuchi
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato DOCX, PDF, TXT o leggi online su Scribd

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