Desde el punto de vista matemático, describir una función de este tipo es trivial: f(x)={0if x∈{1,4}1if x∈{2,3}. No es una fórmula especialmente hábil para la función, pero es ciertamente sencilla. Una alternativa es buscar " números mágicos ". Por ejemplo: f(x)=2x^2+3 \mod 5. Para encontrar esta función, simplemente dejé que mi ordenador buscara hasta que los números coincidieran.
Si buscas una implementación eficiente de esta función, en C digamos, cualquiera de estas podría calcular la función:
char f=(x&2)>>1;
char f=(x>>1)%2; // this is Ross Millikan's suggestion
char f=(x>>1)&1;
Aquí &
es a nivel de bits and
, >>
está desplazado a la derecha por uno, y %
es la operación mod.
Si sólo necesita un if(f!=0) { ... }
(es decir, "si f(x)\neq 0 "), entonces esto sería suficiente:
if(x&2) { ... }
Una alternativa a lo anterior es simplemente almacenar los valores en la memoria. Por ejemplo, mediante:
char f[5]={0,0,1,1,0};
por lo que, si se quiere calcular f(x) , puedes simplemente recordar f[x]
de memoria.