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
scusa, basta chiamare

[code type="markup"]
trova( [1,2] , [1,3,2,3,1,2,5] ).
[/code]

perché sublist credo già esista in prolog!
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Versione umana???
Ma parli dell'esercizio prolog-owl o dell'esercizio in prolog sulla sottolista???


l'esercizio della sottolista come si faceva?
perche' farlo in modo che siano esattamente in quella precisa sequenza non mi viene proprio concepirlo.


anche io non ho tovato inconsistenze e l'unica cosa che sono riuscito ad inferire che sansa era una donna.
per quanto riguarda sublist anche io ho fatto una versione che non funziona sempre che è la seguente :

sublist([],[]).
sublist([X|R1],[Y|R2]):-sublist([X|R1],R2).
sublist([X|R1],[X|R2]):-sublist(R1,R2).
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
no non ce ne erano di inconsistenze. giuro.


Ma quando specifico "someValuesFrom" nomeclasse,
implica che almeno un valore per quella proprietà
deve essere nomclasse, giusto?

Nell'esercizio era dichiarata la proprietà marito,
ma non su nomeclasse specificato nel "someValuesFrom"
(scusa la confusione).


ma l'esercizio prolog come si faceva?
io ho fatto la versione umana quella che accettava tutti e 2 gli esempi,
mi sono accorto troppo tardi che richiedeva un altra cosa.



Fatto così e funziona!!

[code type="markup"]
sublist(A, B) :-
trova(A, B).

trova([H|T1], [H|T2]) :-
conf(T1, T2).

trova(L1, [_|T2]) :-
trova(L1, T2).

conf([], _).

conf([H|T1], [H|T2]) :-
conf(T1, T2).
[/code]
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Versione umana???
Ma parli dell'esercizio prolog-owl o dell'esercizio in prolog sulla sottolista???


l'esercizio della sottolista come si faceva?
perche' farlo in modo che siano esattamente in quella precisa sequenza non mi viene proprio concepirlo.
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Versione umana???
Ma parli dell'esercizio prolog-owl o dell'esercizio in prolog sulla sottolista???
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
- 10 domande crocette
- esercizio (conseguenza logica)
- esercizio prolog
- 1 owl (vedere inconsistenze e classi (esplicite o inferibili))
- 1 owl con Description Logice e Query Prolog.

Ok, questa è la sintesi, poi verranno i dettagli....

nel frattempo, potete dirmi se al 1 esercizio owl avete
trovato inconsistenze? se sì quali? io ne ho trovata una,
ma mo vado di fretta....

scappo....
ciao ciao


no non ce ne erano di inconsistenze. giuro.
ma l'esercizio prolog come si faceva?
io ho fatto la versione umana quella che accettava tutti e 2 gli esempi,
mi sono accorto troppo tardi che richiedeva un altra cosa.
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
- 10 domande crocette
- esercizio (conseguenza logica)
- esercizio prolog
- 1 owl (vedere inconsistenze e classi (esplicite o inferibili))
- 1 owl con Description Logice e Query Prolog.

Ok, questa è la sintesi, poi verranno i dettagli....

nel frattempo, potete dirmi se al 1 esercizio owl avete
trovato inconsistenze? se sì quali? io ne ho trovata una,
ma mo vado di fretta....

scappo....
ciao ciao
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
L'esame di oggi com'era?
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Secondo me questa e' la soluzione migliore:
eliminazione(A, B, C):- findall(Y, (member(Y, A), not(Y=B)), C).


Ottima soluzione!!!!!
Grande!!!
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Se può essere utile posto le mie soluzioni per i vari predicati "cancella":
il primo cancella tutte le occorrenze, il secondo solamente la PRIMA, il terzo restituisce più soluzioni in cui per ogni soluzione si ha la rimozione dell'elemento una volta (in posizioni diverse ovviamente) - esempio quest'ultimo copiato da "The Art of Prolog" dove viene chiamato 'select'.
[code type="markup"]remove_first(_,[],[]).
remove_first(X,[X|Ys],Ys).
remove_first(X,[Y|Ys],[Y|Zs]) :- \+ X=Y, remove_first(X,Ys,Zs).[/code][code type="markup"]remove_all(_,[],[]).
remove_all(X,[X|Ys],Zs) :- remove_all(X,Ys,Zs).
remove_all(X,[Y|Ys],[Y|Zs]) :- \+ X=Y, remove_all(X,Ys,Zs).[/code][code type="markup"]select(X,[X|Xs],Xs).
select(X,[Y|Ys],[Y|Zs]) :- select(X,Ys,Zs).[/code]
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Secondo me questa e' la soluzione migliore:
eliminazione(A, B, C):- findall(Y, (member(Y, A), not(Y=B)), C).
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Ah, dimenticavo. Il cut del secondo predicato mi permette di non avere una condizione al terzo predicato (altrimenti cercando nuove soluzioni potrebbe succedere macello).


non so perchè .... ma nessuno di queste soluzioni è la risposta alla domanda iniziale.... io ho fatto come te.... ma non mi gira...


ANZI MI GIRA... ma non cancella "solo un elemento"

La mia versione cancella "solo un elemento". E' un po poco elegante, ma l'ho fatta al volo. E' primo maggio anche per i miei criceti. :lol:
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Ah, dimenticavo. Il cut del secondo predicato mi permette di non avere una condizione al terzo predicato (altrimenti cercando nuove soluzioni potrebbe succedere macello).


non so perchè .... ma nessuno di queste soluzioni è la risposta alla domanda iniziale.... io ho fatto come te.... ma non mi gira...


ANZI MI GIRA... ma non cancella "solo un elemento"
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Ah, dimenticavo. Il cut del secondo predicato mi permette di non avere una condizione al terzo predicato (altrimenti cercando nuove soluzioni potrebbe succedere macello).


non so perchè .... ma nessuno di queste soluzioni è la risposta alla domanda iniziale.... io ho fatto come te.... ma non mi gira...
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
A=2 allora ok
mentre se ho [2,1,2,3] a =2 non funziona
restituisce [1,2,3].
la mia domanda perchè?
aiuto :lol:


Al volo, così dovrebbe andare:

cancella([],A,[]).
cancella([H|T1],A,[H|T2]):- (\+ (H is A)), !, cancella(T1, A, T2).
cancella([_|T1],A,List):- cancella(T1,A, List).

ORA PROVO..... E TI DICO.

ANZI NO... non funge.... cioè leva tutti gli elementi....

SI..... MO NE LEVA UNO
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Ah, dimenticavo. Il cut del secondo predicato mi permette di non avere una condizione al terzo predicato (altrimenti cercando nuove soluzioni potrebbe succedere macello).
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Cosi mi sa che funziona:

del(X,[],[]).
del(X,[X|L],M) :- del(X,L,M), !.
del(X,[Y|L],[Y|M]) :- del(X,L,M).
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Io l'ho fatto cosi. Mi sa che è un po impicciato, ma sembra che funziona!! :lol:

cancella([T,C],R,E) :- not(T==E), C==E, append([T],[],R).
cancella([T],R,E) :- not(T==E), append([T],[],R).
cancella([T|C],R,E) :- not(T==E), cancella(C,R1,E), append([T],R1,R).
cancella([T|C],R,E) :- T==E, cancella(C,R,E).

?- cancella([2,1,2,5,4,2],Z,2).

Z = [1, 5, 4] ;
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
A=2 allora ok
mentre se ho [2,1,2,3] a =2 non funziona
restituisce [1,2,3].
la mia domanda perchè?
aiuto :lol:


Al volo, così dovrebbe andare:

cancella([],A,[]).
cancella([H|T1],A,[H|T2]):- (\+ (H is A)), !, cancella(T1, A, T2).
cancella([_|T1],A,List):- cancella(T1,A, List).

ORA PROVO..... E TI DICO.

SI..... MO NE LEVA UNO
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
A=2 allora ok
mentre se ho [2,1,2,3] a =2 non funziona
restituisce [1,2,3].
la mia domanda perchè?
aiuto :lol:


Al volo, così dovrebbe andare:

cancella([],A,[]).
cancella([H|T1],A,[H|T2]):- (\+ (H is A)), !, cancella(T1, A, T2).
cancella([_|T1],A,List):- cancella(T1,A, List).

ORA PROVO..... E TI DICO.
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!