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
ragazzi un chiarimento sul prolog.
voglio fare un prog che mi tolga le occorrenze di un termine in una lista e mi restituisce sempre una llista senza tale termine.
io avrei ragionato cosi:

cancella([],A,[]).
cancella([A|T],A,T):-cancella(T,A,T).
cancella([H|T],A,[H|Y]):-cancella(T,A,Y).

qualcuno potrebbe spiegarmi perchè non funziona grazie.
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
ragazzi un chiarimento sul prolog.
voglio fare un prog che mi tolga le occorrenze di un termine in una lista e mi restituisce sempre una llista senza tale termine.
io avrei ragionato cosi:

cancella([],A,[]).
cancella([A|T],A,T):-cancella(T,A,T).
cancella([H|T],A,[H|Y]):-cancella(T,A,Y).

qualcuno potrebbe spiegarmi perchè non funziona grazie.



A ME GIRA..... L'unica cosa è che puoi cancellare un solo elemento da quella lista... la cosa carina sarebbe cancellare una sottolista dalla listona :wink:
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
scusa gira se togli il termine c'è una solavolta nella lista di partenza
ovvero [1,2,3] 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:
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:

Tu gli fai scorrere ricorsivamente tutta la lista di partenza.... è normale che se trova due elementi uguali a quello che vuoi togliere li toglie entrambi....
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).
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.
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
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
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
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
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).


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
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...


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
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
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).


Ottima soluzione!!!!!
Grande!!!
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
- 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
- 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.


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