fbpx
Skip to main content
  1. VanillaSky
  2. Ingegneria Informatica - Triennale
  3. Giovedì, 22 Febbraio 2007
  4.  Subscribe via email
in virtù degli orari usciti apro il 3d del corso.
Benvengano consigli da chi ha già sostenuto l'esame.
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Io la penso come voi...
Ma di 'sta roba è il primo (secondo contando quello di Stellato) esempio che vedo... Ed è tardi... :D
Disegnandolo con gli insiemi, "senza patente" è una sottoclasse di una restrizione su "commessoReato"...
Quindi non vedo come inferire qualcosa in "senza patente"... :?
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
, L2) :-

\+ (member(H1, L2)),

no_common_elem(R1, L2).

:oops: In effetti funziona benissimo! Solo,che io ero fissato col mio programmino per eliminare le ripetizioni, e avevo capito che quel no_common_elem dovesse fare la stessa cosa! Scusate!
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
E questa come vi pare???

max_list([X],X).

max_list([H,L|Rest],H):-
H>=L,
max_list([H|Rest],H).
max_list([H,L|Rest],H):-
H<L,
max_list([L|Rest],L).
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Mamma mia non funziona assolutamente...
Scrive il primo elemento della lista...
O mio Dio...
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
ragno, questo ti dà sempre il primo elemento della lista.
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Non vedo dove...
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
E questa come vi pare???

[code type="markup"]max_list([X],X).

max_list([H,L|Rest],H):-
H>=L,
max_list([H|Rest],H).

max_list([H,L|Rest],H):-
H<L,
max_list([L|Rest],L).[/code]


Ti dico la verità... Non ho il tempo per ragionarci su...
Ma dandolo in pasto all'SWI-Prolog NON restituisce il massimo della lista...
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Infatti non capisco neanche io.
A dire il vero, mi vergogno un po' a dirlo, un errore simile l'avevo fatto quando ho provato a scrivere il predicato "lenght".

Io l'ho scritto così:

lenght([],0).
lenght([Y|U],N):-
M is N + 1,
lenght([U],M).

Mentre la versione corretta è:

lenght([],0).
lenght([Y|U],N):-
lenght([U],M),
M is N + 1.

Qualcuno sa dirmi il perchè???

Lo stesso vale per max_list.
Perchè la condizione di > o < è posta DOPO aver richiamato ricorsivamente la procedura???
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Questo discorso dell'ordine l'avevamo notato...
Io penso che dipenda dal fatto che valuti quelle condizioni in AND dalla prima all'ultima...
E NON riesca quindi ad assegnare un valore ad N, non sapendo quanto vale M, fino a che non chiude l'ultima chiamata ricorsiva...

Comunque non mi sembra giusta quella length scritta così...
M ed N mi sembrano proprio scambiati, in entrambi i casi... :?
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Ok, ok, ho detto una baggianata.
Lenght funziona ugualmente.
Non capisco comunque la max_of_a_list:

max_of_a_list( [Head|Rest], Head) :-
max_of_a_list( Rest, Max ),
Head > Max.

Che diamine di procedimento fa?
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
esempio di marco79:

possiedemacchina è InversaFunzionale ==> dominio diventa identificatore ===> quindi se ho il nome di una Persona so esattamente quale macchina ha (in questo esempio quindi una Persona non può avere più di due macchine ==> le due macchine sono la stessa cosa ===> Pino e Mario SONO le stesse persone.
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
THIS IS CONFUSION!!! :D

La "lenght" come l'hai scritta, ragno nero docet, non funziona, nemmeno nella versione "corretta"... ;)

[size=2]Almeno io ho visto questo, con i miei occhi...[/size]
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Si scusate, mi sono sbagliato invertendo le variabili.
Ma che mi dite del predicato max???
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Si scusate, mi sono sbagliato invertendo le variabili.
Ma che mi dite del predicato max???


Il predicato per il massimo lavora come tutti i predicati sulle liste...
Conoscendo il massimo di una lista...
Aggiungendo a questa un elemento (la testa), il nuovo massimo sarà aggiornato, solo se la testa è maggiore del "vecchio massimo"...

Il problema è che non capisco perché non basti questa condizione... :?
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Adesso provo un'altra versione di max_of_a_list...

max_of_a_list(List,X):-
sort(List,SortedList),
last_elem(SortedList,M),
X is M.

sort e last_elem prima ordinano la lista e poi prendono l'ultimo elemento...
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Quindi, richiamando la procedura, è come se stabilissi due massimi.
Continua finchè il primo max è maggiore del secondo.
In caso contrario, passa ad esaminare l'altro max.
E' così?
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
se ti può essere di aiuto ti posto la mia procedura:

maxlist([],N).
maxlist([H|[]],H).
maxlist([H|[J|T]],MAX) :- H < J , maxlist([J|T],MAX).
maxlist([H|[J|T]],MAX) :- H >= J, maxlist([H|T],MAX).
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Effettivamente non è troppo diversa da quella che avevo in mente...

La riga
maxlist([H|[J|T]],MAX)
funziona, mentre la mia
maxlist([H,J|T]],MAX)
evidentemente no...

Grazie comunque...
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
esempio di marco79:

possiedemacchina è InversaFunzionale ==> dominio diventa identificatore ===> quindi se ho il nome di una Persona so esattamente quale macchina ha (in questo esempio quindi una Persona non può avere più di due macchine ==> le due macchine sono la stessa cosa ===> Pino e Mario SONO le stesse persone.


ok fin qui siamo d'accordo, ma invece cosa mi sai dire sulle istanze inferibili di senza patente?
Comment
There are no comments made yet.
Accepted Answer Pending Moderation

ok fin qui siamo d'accordo, ma invece cosa mi sai dire sulle istanze inferibili di senza patente?

Dico che non ce ne sono! L'ontologia mi pare (volutamente) fatta male, sappiamo che "senza patente" è un sottoinsieme di commessoreato, ma non c'è scritto da nessuna parte che "senza patente" è legato al "reatoautomobilistico"
Comment
There are no comments made yet.


There are no replies made for this post yet.
Be one of the first to reply to this post!