Si usted está haciendo estos cálculos en una computadora y puede conseguir lejos de
insistir en la interpretación de $x_1$, $x_2$, $x_3$ como los números enteros en el rango
$[0,255]$, considere la posibilidad de pensar de $x_1$, $x_2$, $x_3$ como de ocho bits bytes
o vectores de longitud $8$ $\mathbb F_2$ a ser un poco más formal.
Entonces, para cualquiera de las tres bytes $a$, $b$, $c$ con al menos uno distinto de cero,
$$f(x_1, x_2, x_3) = (x_1\oplus a, x_2\oplus b, x_3\oplus c)$$
tiene las propiedades deseadas que
$$\begin{align*}
f(f(x_1, x_2, x_3)) &= f(x_1\oplus a, x_2\oplus b, x_3\oplus c)\\
&= (x_1\oplus a\oplus a, x_2\oplus b\oplus b, x_3\oplus c \oplus c)\\
&= (x_1, x_2, x_3),
\end{align*}$$
y $(x_1, x_2, x_3) \neq f(x_1, x_2, x_3)$.
Como un bono adicional (no necesariamente importante
de matemáticas.SE de los lectores), la operación XOR en bytes es un
máquina-enseñanza de idioma en la mayoría de los equipos
y en algunos casos puede ser más rápido que la instrucción ADD
que a menudo se define por completo (de varios bytes) sólo palabras.
Tenga en cuenta que $f(x_1,x_2,x_3)=(255−x_1,255−x_2,255−x_3)$ como se sugiere
por @ofer es justo
$f(x_1,x_2,x_3)
= (x_1, \oplus \mathbf 1, x_2\oplus \mathbf 1, x_3\oplus \mathbf 1)$
donde $\mathbf 1 = (1,1,1,1,1,1,1,1)$ es el de ocho bits de todos aquellos byte.