Prolog e sostituzione di un elemento in un vettore
Saturday, January 23, 2010 11:50:10 AM
Quindi siccome mi serviva rimpiazzare un elemento di un vettore in base alla sua posizione, ho cercato su internet per trovare qualcosa ... ma niente. Non ho trovato nulla. Così mi sono costruito da solo il predicato che mi serviva: l'avessi fatto prima avrei risparmiato parecchio tempo
! Così eccoci qua, pubblico il codice del predicato replaceEntry/4, magari può servire a qualcuno:replaceEntry(_,_,[],[]). replaceEntry(1,Value,[_|OldList], [Value|NewList]) :- replaceEntry(0, Value, OldList, NewList), !. replaceEntry(Position,Value,[X|OldList],[X|NewList]) :- Position =\= 1, NewPosition is Position - 1, replaceEntry(NewPosition, Value, OldList,NewList), !.
Quindi se volete rimpiazzare un elemento che si trova in una certa posizione di un vettore, potete scrivere:
replaceEntry(2,rimpiazzo,[elemento1,elemento2,elemento3],Nuovo_vettore_con_elemento_rimpiazzato).
Il valore di Nuovo_vettore_con_elemento_rimpiazzato sarà [elemento1,rimpiazzo,elemento3].
Quindi riassumendo: a Position dovete assegnare la posizione dell'elemento che volete sostituire (parte da 1), a Value dovete assegnare il valore da sostituire, a [X|OldList] dovete assegnare il vettore originale di cui volete sostituire un elemento, e a [X|NewList] dovete assegnare una variabile in cui verrà memorizzato il risultato (ovvero il nuovo vettore con l'elemento sostituito).








