 | |
Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum |
Esame Di Oggi Clicca QUI per vedere il messaggio nel forum |
Torre |
Raga ma come si faceva il secondo esercizio di oggi?
Molti han detto che si congelava tutto ma i cut si attraversavano solo alla fine e quando trovo un fallimento non vado avanti, mi fermo e esco con fail... |
garfa84 |
lasciamo stare, sono stato 1 ora un quarto per vedere come farlo e alla fine l'ho sbagliato, alla fine la prof ha fatto la correzione e si faceva che partiva il primo ramo si istanzia X/dario Y/competitivo nel nodo dopo _ va sostituito con A e nell'altro con B per far intendere che _ vuol dire qualsiasi variabile e così via...alla fine si trovano 2 soluzioni, invece io avevo trovato che tutti e 3 i rami fallivano perchè avevo inteso _ istanziandola allo stesso valore!!!
Si però non si può su due esercizi che se ne sbaglio 1 sei quasi fregato...allora fammene fare 4 o 5 o 6 in un' ora e mezza |
Torre |
Si ma lei non le ha mai spiegate in classe queste cose cmq...
Va beh sarà x la prox volta, sperando di non trovare altre novità dell'ultimo secondo quando leggo il testo... |
pragers |
Originally posted by garfa84
lasciamo stare, sono stato 1 ora un quarto per vedere come farlo e alla fine l'ho sbagliato, alla fine la prof ha fatto la correzione e si faceva che partiva il primo ramo si istanzia X/dario Y/competitivo nel nodo dopo _ va sostituito con A e nell'altro con B per far intendere che _ vuol dire qualsiasi variabile e così via...alla fine si trovano 2 soluzioni, invece io avevo trovato che tutti e 3 i rami fallivano perchè avevo inteso _ istanziandola allo stesso valore!!!
Si però non si può su due esercizi che se ne sbaglio 1 sei quasi fregato...allora fammene fare 4 o 5 o 6 in un' ora e mezza
ma sei sicuro che vengono due soluzioni?
A me ne è venuta una sola.Ho scritto il programma su prolog e con il quesito dell'esercizio la soluzione data dall'interprete è una sola e precisamente:
X = competitivo
Z = campione
L'interprete non dovrebbe sbagliare. |
garfa84 |
se non ricordo male erano 2 soluzioni , non ne sono sicuro perchè non l'ho scritto!!!
ma il programma è questo:
batte(dario,luigi).
batte(franca,dario).
batte(paolo,luigi).
classe(X,competitivo) :- batte(X ,_),batte(_,X),!.
classe(X,campione) :- batte(X ,_),not batte(_,X),!.
classe(X,sportivo) :- batte(_,X ),not batte(X,_).
e il quesito
?-classe(dario,Y),classe(franca,Z).
perchè a me l'interprete mi dice che fallisce....strano!!
ma _ si rappresenta con un underscore normale!?! |
pragers |
Originally posted by garfa84
se non ricordo male erano 2 soluzioni , non ne sono sicuro perchè non l'ho scritto!!!
ma il programma è questo:
batte(dario,luigi).
batte(franca,dario).
batte(paolo,luigi).
classe(X,competitivo) :- batte(X ,_),batte(_,X),!.
classe(X,campione) :- batte(X ,_),not batte(_,X),!.
classe(X,sportivo) :- batte(_,X ),not batte(X,_).
e il quesito
?-classe(dario,Y),classe(franca,Z).
perchè a me l'interprete mi dice che fallisce....strano!!
ma _ si rappresenta con un underscore normale!?!
si il testo è corretto.L'unica cosa è che il not deve avere le parentesi se no da errore in compilazione cioè not(batte(_,X))
guarda io l ho appena rifatto e l'output dell'interprete è:
?- classe(dario,Y),classe(franca,Z).
Y = competitivo,
Z = campione.
Fatto proprio copia/incolla. |
Johnny88 |
L'interpreta ha pienamente ragione!
ecco cosa fa con il trace :
[debug] ?- trace,classe(dario,Y),classe(franca,Z).
Call: (8) [user] classe(dario, _G313) ? creep
Call: (9) [user] batte(dario, _L230) ? creep
Exit: (9) [user] batte(dario, luigi) ? creep
Call: (9) [user] batte(_L229, dario) ? creep
Exit: (9) [user] batte(franca, dario) ? creep
Exit: (8) [user] classe(dario, competitivo) ? creep
Call: (8) [user] classe(franca, _G316) ? creep
Call: (9) [user] batte(franca, _L230) ? creep
Exit: (9) [user] batte(franca, dario) ? creep
Call: (9) [user] batte(_L229, franca) ? creep
Fail: (9) [user] batte(_L229, franca) ? creep
Redo: (8) [user] classe(franca, _G316) ? creep
Call: (9) [user] batte(franca, _L230) ? creep
Exit: (9) [user] batte(franca, dario) ? creep
^ Call: (9) [user] not(batte(_G422, franca)) ? creep
Call: (10) [user] batte(_G422, franca) ? creep
Fail: (10) [user] batte(_G422, franca) ? creep
^ Exit: (9) [user] not(batte(_G422, franca)) ? creep
Exit: (8) [user] classe(franca, campione) ? creep
Y = competitivo,
Z = campione.
la variabile _ la si può unificare ogni volta con qualcosa di diverso... insomma bisogna provarle tutte...
Meno male che mi sono ritirato :D |
pragers |
Originally posted by Johnny88
L'interpreta ha pienamente ragione!
ecco cosa fa con il trace :
[debug] ?- trace,classe(dario,Y),classe(franca,Z).
Call: (8) [user] classe(dario, _G313) ? creep
Call: (9) [user] batte(dario, _L230) ? creep
Exit: (9) [user] batte(dario, luigi) ? creep
Call: (9) [user] batte(_L229, dario) ? creep
Exit: (9) [user] batte(franca, dario) ? creep
Exit: (8) [user] classe(dario, competitivo) ? creep
Call: (8) [user] classe(franca, _G316) ? creep
Call: (9) [user] batte(franca, _L230) ? creep
Exit: (9) [user] batte(franca, dario) ? creep
Call: (9) [user] batte(_L229, franca) ? creep
Fail: (9) [user] batte(_L229, franca) ? creep
Redo: (8) [user] classe(franca, _G316) ? creep
Call: (9) [user] batte(franca, _L230) ? creep
Exit: (9) [user] batte(franca, dario) ? creep
^ Call: (9) [user] not(batte(_G422, franca)) ? creep
Call: (10) [user] batte(_G422, franca) ? creep
Fail: (10) [user] batte(_G422, franca) ? creep
^ Exit: (9) [user] not(batte(_G422, franca)) ? creep
Exit: (8) [user] classe(franca, campione) ? creep
Y = competitivo,
Z = campione.
la variabile _ la si può unificare ogni volta con qualcosa di diverso... insomma bisogna provarle tutte...
Meno male che mi sono ritirato :D
Bhe in realtà non bisogna provarle proprio tutte.Es: batte(dario,_) è vera non appena _ è istanziato con qualcosa che rende vera la clausola.Basta che ne trovi uno poi non devi continuare con gli altri,difatti nel tuo output quando _ è istanziato con luigi, divante batte(dario,luigi) e la clausola viene eliminata senza provare gli altri casi,quindi in realtà l'istanziazione da fare è solo una. |
Johnny88 |
Si si in questo caso... invece il primo? perchè a me l'interpete mi da come output solo N=1 e non anche N=3.... sembra che fa solo un ramo... |
pragers |
Originally posted by Johnny88
Si si in questo caso... invece il primo? perchè a me l'interpete mi da come output solo N=1 e non anche N=3.... sembra che fa solo un ramo...
A me da anche N=3.Attento che prolog ti da una soluzione,se vuoi sapere anche le successive devi premere ";" quando ti da la prima soluzione,se schiacci invio altrimenti fa vedere solo la prima. |
|
|
|
|