In article <firstname.lastname@example.org>, Andre and Alain <email@example.com> wrote: > Hey! I have a list of Numbers, 1 to 4, and wish to rescale them so >that 1 replkaces 4 and 3 replaces 2 and 2 replaces 3 etc. I made a little >code to do this on an element per element basis and it doesn't seem to do >it! Could someone let me know what I'm doing wrong or whether it's a Mma >problem? Thanks > [nonworking code snipped]
The problem is that when you encounter 1's or 2's, you're changing them into 4's or 3's respectively, and then you hit the next If statement and change them back again!
The easiest way to accomplish what you want is
newgsub = (5-#)& /@ gsub;
('/@' is shorthand for Map, '(5-#)&' is a pure function equivalent to f[x_] := (5-x); ).
If you're not always going to be doing your substitution in such a way that the numbers add up to a constant, you can define an encoding function as follows: