in virtù degli orari usciti apro il 3d del corso.
Benvengano consigli da chi ha già sostenuto l'esame.
- VanillaSky
- Ingegneria Informatica - Triennale
- Giovedì, 22 Febbraio 2007
- Subscribe via email
Comment
There are no comments made yet.
Accepted Answer
Pending Moderation
Oggi mi è sembrato più abbordabile....
a voi come è andata?
esercizio 2)
[code type="markup"]merge(L, [], L).
merge([], L, L).
merge([H1|T1],[H2|T2],[H1|T3]) :-
H1 =< H2,
merge(T1, [H2|T2], T3).
merge([H1|T1],[H2|T2],[H1|T3]) :-
H1 > H2,
merge([H1|T1], T2, T3).
[/code]
esercizio 3)
Inconsistenza c'era stavolta: duska era dichiarato cane, e inferito oggetto,
ma all'inizio oggetto e animale (quindi anche cane in quanto subClass) erano dichiarati disjoint.
esercizio4 )
1a. ESISTE team ( giocato >= 3) {giocatore attivo)
1b. ESISTE team ( incorre_in = 0) {premio fair play }
2a. credo che andava fatto così
[code type="markup"]comp(A) :-
getIdividualsBelongingToClass('Team', [], List),
forall (
member (M, List),
(
writeln(M),
M \= A
)
).
*non ricordo come si chiama la classe...che era TeamCouple...? cmq ho messo solo Team[/code]
a voi come è andata?
esercizio 2)
[code type="markup"]merge(L, [], L).
merge([], L, L).
merge([H1|T1],[H2|T2],[H1|T3]) :-
H1 =< H2,
merge(T1, [H2|T2], T3).
merge([H1|T1],[H2|T2],[H1|T3]) :-
H1 > H2,
merge([H1|T1], T2, T3).
[/code]
esercizio 3)
Inconsistenza c'era stavolta: duska era dichiarato cane, e inferito oggetto,
ma all'inizio oggetto e animale (quindi anche cane in quanto subClass) erano dichiarati disjoint.
esercizio4 )
1a. ESISTE team ( giocato >= 3) {giocatore attivo)
1b. ESISTE team ( incorre_in = 0) {premio fair play }
2a. credo che andava fatto così
[code type="markup"]comp(A) :-
getIdividualsBelongingToClass('Team', [], List),
forall (
member (M, List),
(
writeln(M),
M \= A
)
).
*non ricordo come si chiama la classe...che era TeamCouple...? cmq ho messo solo Team[/code]
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 401
Accepted Answer
Pending Moderation
Oggi mi è sembrato più abbordabile....
a voi come è andata?
esercizio 2)
[code type="markup"]merge(L, [], L).
merge([], L, L).
merge([H1|T1],[H2|T2],[H1|T3]) :-
H1 =< H2,
merge(T1, [H2|T2], T3).
merge([H1|T1],[H2|T2],[H1|T3]) :-
H1 > H2,
merge([H1|T1], T2, T3).
[/code]
esercizio 3)
Inconsistenza c'era stavolta: duska era dichiarato cane, e inferito oggetto,
ma all'inizio oggetto e animale (quindi anche cane in quanto subClass) erano dichiarati disjoint.
esercizio4 )
1a. ESISTE team ( giocato >= 3) {giocatore attivo)
1b. ESISTE team ( incorre_in = 0) {premio fair play }
2a. credo che andava fatto così
[code type="markup"]comp(A) :-
getIdividualsBelongingToClass('Team', [], List),
forall (
member (M, List),
(
writeln(M),
M \= A
)
).
*non ricordo come si chiama la classe...che era TeamCouple...? cmq ho messo solo Team[/code]
Fra, non te preoccupa, che ti ha promosso! :lol:
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 402
Accepted Answer
Pending Moderation
esercizio 3)
Inconsistenza c'era stavolta: duska era dichiarato cane, e inferito oggetto,
ma all'inizio oggetto e animale (quindi anche cane in quanto subClass) erano dichiarati disjoint.
Dov'è che inferivi che duska è un oggetto?
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 403
Accepted Answer
Pending Moderation
esercizio 3)
Inconsistenza c'era stavolta: duska era dichiarato cane, e inferito oggetto,
ma all'inizio oggetto e animale (quindi anche cane in quanto subClass) erano dichiarati disjoint.
Dov'è che inferivi che duska è un oggetto?
io sono per quella minornza che dice che l'inconsistenza non c'era.
speriamo bene. :roll:
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 404
Accepted Answer
Pending Moderation
Anche per me Duska era inferito Oggetto perche' il proprietario era di tipo Myst, ed appunto siccome Oggetto e Animale erano disgiunti si aveva un inconsistenza.
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 405
Accepted Answer
Pending Moderation
Anche per me Duska era inferito Oggetto perche' il proprietario era di tipo Myst, ed appunto siccome Oggetto e Animale erano disgiunti si aveva un inconsistenza.
boh sinceramente questa cosa non la capisco...per me non c erano
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 406
Accepted Answer
Pending Moderation
Anche per me Duska era inferito Oggetto perche' il proprietario era di tipo Myst, ed appunto siccome Oggetto e Animale erano disgiunti si aveva un inconsistenza.
io ho ragionato cosi':
siccome Myst se possedeva qualcosa, quella era un ogetto, e ha_animale è sottoproprieta' di possiede, poteva esserci l'inconsistenza.
pero' poi ho pensato pure che possiede non ha dominio ne range specificato, e questo mi ha messo in crisi, alla fine ho deciso che l'inconsistenza non c'e', ma non sono sicuro. Diciamo che OWL è un po' un terno al lotto.
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 407
Stellato dice che c'erano ed il motivo secondo me è questo:
duska è una cane (diverso da oggetto). ha_padrone è inversa di ha_animale (sottoproprietà di possiede, riferito solo ad oggetti), che è inversa funzionale, quind in definitiva si ha una "biezione" (ah, pettored) 1-1. Poi si sa che i Myst possono possedere solo oggetti e mario è un Myst. Dunque una inconsistenza evidente sarebbe stata: mario ha_animale duska. Noi invece avevamo duska ha_padrone mario, ma poiché ha_padrone è l'inversa di una inversa funzionale, vuol dire che è funzionale, quindi la corrispondenza 1-1 ci porta a dire che avere duska ha_padrone mario oppure mario ha_animale duska è indifferente, perché entrambe producono una inconsistenza.
duska è una cane (diverso da oggetto). ha_padrone è inversa di ha_animale (sottoproprietà di possiede, riferito solo ad oggetti), che è inversa funzionale, quind in definitiva si ha una "biezione" (ah, pettored) 1-1. Poi si sa che i Myst possono possedere solo oggetti e mario è un Myst. Dunque una inconsistenza evidente sarebbe stata: mario ha_animale duska. Noi invece avevamo duska ha_padrone mario, ma poiché ha_padrone è l'inversa di una inversa funzionale, vuol dire che è funzionale, quindi la corrispondenza 1-1 ci porta a dire che avere duska ha_padrone mario oppure mario ha_animale duska è indifferente, perché entrambe producono una inconsistenza.
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 408
Fra, non te preoccupa, che ti ha promosso! :lol:
E chi sei Stellato in incognito!? :shock:
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 409
Oggi mi è sembrato più abbordabile....
a voi come è andata?
Anche a me, sicuramente meglio dell'altra volta!
(anche perche' peggio non poteva andare!!
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 410
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 411
Accepted Answer
Pending Moderation
Fra, non te preoccupa, che ti ha promosso! :lol:
E chi sei Stellato in incognito!? :shock:
Non sono Stellato, ma avevo ragione
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 412
Fra, non te preoccupa, che ti ha promosso! :lol:
E chi sei Stellato in incognito!? :shock:
Non sono Stellato, ma avevo ragione![]()
...sei la Pazienza!
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 413
Accepted Answer
Pending Moderation
Non sono Stellato, ma avevo ragione![]()
Chiunque tu sia...(ma tanto lo so) ti odio!
...tu e il tuo 30&L
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 414
Accepted Answer
Pending Moderation
bah..passato..male, ma passato...bene così..grazie a tutti
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 415
Accepted Answer
Pending Moderation
Ciao! Mi sto preparando per l'esame di SBC del 4...ho un problema con Prolog...
Nel test di autovalutazione alla domanda 5, si deve scrivere il predicato di
ermutation(A,B).
Guardando la soluzione, il prof usa la member/3 e poi dice che fa il delete dell'elemento trovato...
Come fa?!?!? Non trovo corrispondenze di member a 3 argomenti, ma può essere che l'ha modificato il prog...se così è dove si vede che cancella l'elemento trovato??
Metto il codice
Grazie a chiunque sappia rispondere!! :lol:
Nel test di autovalutazione alla domanda 5, si deve scrivere il predicato di
Guardando la soluzione, il prof usa la member/3 e poi dice che fa il delete dell'elemento trovato...
Come fa?!?!? Non trovo corrispondenze di member a 3 argomenti, ma può essere che l'ha modificato il prog...se così è dove si vede che cancella l'elemento trovato??
Metto il codice
permutazione([],[]).
permutazione(A,[C|B]):-
member(C,A,AK),permutazione(AK,B).
member(C,[C|A],A).
member(K,[J|A],[J|R]) :-
member(K,A,R).
Grazie a chiunque sappia rispondere!! :lol:
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 416
Accepted Answer
Pending Moderation
Innanzitutto, se non ho capito male... lavori con i primi due parametri, l'altro è in output.
Da qui:
[code type="markup"]member(C,[C|A],A).
^ ^
[/code]
Tu stai cercando C. Se, nella lista centrale, scorrendola (e lo fai usando la notazione [H|T], dove H è la testa della lista e T la coda, anch'essa una lista), trovi un elemento uguale (dichiari la testa C per far capire a Prolog proprio questo), dici a Prolog non fare nulla con C e di copiare la coda A nella lista di output.
Poi continua:
[code type="markup"]member(K,[J|A],[J|R]) :-
^ ^
member(K,A,R).[/code]
Se invece è diverso (K != J), allora copia J nell'altra lista e ripeti anche per gli elementi mancanti, passando la coda A e la coda R (al quale, però, è già stato aggiunto J), cercando di eliminare sempre lo stesso elemento (quindi K).
Sarebbe stata anche la stessa cosa scrivendolo così, senza mettere quel K che crea confusione:
[code type="markup"]member(C, [C|A], A).
member(C, [J|A], [J|R]) :- member(C, A, R).[/code]
Oddio, non so se è proprio chiaro :?
Da qui:
[code type="markup"]member(C,[C|A],A).
^ ^
[/code]
Tu stai cercando C. Se, nella lista centrale, scorrendola (e lo fai usando la notazione [H|T], dove H è la testa della lista e T la coda, anch'essa una lista), trovi un elemento uguale (dichiari la testa C per far capire a Prolog proprio questo), dici a Prolog non fare nulla con C e di copiare la coda A nella lista di output.
Poi continua:
[code type="markup"]member(K,[J|A],[J|R]) :-
^ ^
member(K,A,R).[/code]
Se invece è diverso (K != J), allora copia J nell'altra lista e ripeti anche per gli elementi mancanti, passando la coda A e la coda R (al quale, però, è già stato aggiunto J), cercando di eliminare sempre lo stesso elemento (quindi K).
Sarebbe stata anche la stessa cosa scrivendolo così, senza mettere quel K che crea confusione:
[code type="markup"]member(C, [C|A], A).
member(C, [J|A], [J|R]) :- member(C, A, R).[/code]
Oddio, non so se è proprio chiaro :?
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 417
Accepted Answer
Pending Moderation
Grazie della spiegazione! Sei stato molto dettagliato...ora inizia ad avere un senso :lol:
Il problema principale è che non riesco a capire la logica di prolog e ragiono come se fosse un linguaggio di programmazione "normale" :cry:
Il problema principale è che non riesco a capire la logica di prolog e ragiono come se fosse un linguaggio di programmazione "normale" :cry:
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 418
Accepted Answer
Pending Moderation
Allora vediamo se ho capito...
Con questo gli do in input le liste da controllare.
Parte la member(C,A,AK) e va in :
Se la testa è = copia la coda e passa all'elemento successivo altrimenti copia tutto e parte di nuovo la ricorsione.
Giusto?
permutazione(A,[C|B]):-
member(C,A,AK),permutazione(AK,B).
Con questo gli do in input le liste da controllare.
Parte la member(C,A,AK) e va in :
member(C,[C|A],A).
member(C,[J|A],[J|R]) :-
member(C,A,R).
Se la testa è = copia la coda e passa all'elemento successivo altrimenti copia tutto e parte di nuovo la ricorsione.
Giusto?
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 419
Accepted Answer
Pending Moderation
Allora vediamo se ho capito...
permutazione(A,[C|B]):-
member(C,A,AK),permutazione(AK,B).
Con questo gli do in input le liste da controllare.
Parte la member(C,A,AK) e va in :
member(C,[C|A],A).
member(C,[J|A],[J|R]) :-
member(C,A,R).
Se la testa è = copia la coda e passa all'elemento successivo altrimenti copia tutto e parte di nuovo la ricorsione.
Giusto?
Se la testa è uguale all'elemento cercato, appunto, copia la coda della lista centrale nella lista di output [condizione di uscita]...e il "controllo" torna a permutazione/2
Se invece l'elemento di testa della lista centrale, è diverso da quello cercato...lo copia nella lista di output, continua a controllare che non ci siano elementi uguali, con la ricorsione... se ne trova uno, come sopra, altrimenti quando conclude lo scorrimento della lista centrale (senza aver trovato elementi uguali) il "controllo" ritorna a permutazione/2
Eh, il Prolog è un po' strano, rispetto ai soliti linguaggi che siamo abituati ad usare...
Fa conto che la regola di "uscita" di una chiamata ricorsiva va dichiarata per prima, come puoi vedere dall'esempio precedente...
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 420
There are no replies made for this post yet.
Be one of the first to reply to this post!
Be one of the first to reply to this post!
Please login to post a reply
You will need to be logged in to be able to post a reply. Login using the form on the right or register an account if you are new here. Register Here »