How to write 6 different functions that accept 5 or 7 and return the other number, without using if,switch in Java

1 Answer

0 votes
public class FlipNumbers {

    // Six different functions that accept 5 or 7
    // and return the other number, without using if/switch.

    // 1. Arithmetic sum trick: 5 + 7 = 12
    static int flipSum(int x) {
        return 12 - x;
    }

    // 2. Product trick: 5 * 7 = 35
    static int flipProduct(int x) {
        return 35 / x;
    }

    // 3. XOR trick: 5 ^ 7 = 2
    //    x ^ 2 flips 5 ↔ 7
    static int flipXor(int x) {
        return x ^ 2;
    }

    // 4. Modulo-based trick using divisibility:
    //    x % 7 == 0 → x is 7
    //    x % 5 == 0 → x is 5
    //    Boolean expressions become 1 or 0 when used in arithmetic.
    static int flipMod(int x) {
        return 5 * (x % 7 == 0 ? 1 : 0)
             + 7 * (x % 5 == 0 ? 1 : 0);
    }

    // 5. Absolute-value trick: |x - 12| flips 5 ↔ 7
    static int flipAbs(int x) {
        return Math.abs(x - 12);
    }

    // 6. Array lookup using boolean indexing
    static int flipArray(int x) {
        int[] table = {7, 5};
        return table[(x == 5) ? 1 : 0];
    }

    public static void main(String[] args) {

        System.out.println("flip_sum(5) = " + flipSum(5));
        System.out.println("flip_sum(7) = " + flipSum(7));
        System.out.println();

        System.out.println("flip_product(5) = " + flipProduct(5));
        System.out.println("flip_product(7) = " + flipProduct(7));
        System.out.println();

        System.out.println("flip_xor(5) = " + flipXor(5));
        System.out.println("flip_xor(7) = " + flipXor(7));
        System.out.println();

        System.out.println("flip_mod(5) = " + flipMod(5));
        System.out.println("flip_mod(7) = " + flipMod(7));
        System.out.println();

        System.out.println("flip_abs(5) = " + flipAbs(5));
        System.out.println("flip_abs(7) = " + flipAbs(7));
        System.out.println();

        System.out.println("flip_array(5) = " + flipArray(5));
        System.out.println("flip_array(7) = " + flipArray(7));
    }
}

/*
OUTPUT:

flip_sum(5) = 7
flip_sum(7) = 5

flip_product(5) = 7
flip_product(7) = 5

flip_xor(5) = 7
flip_xor(7) = 5

flip_mod(5) = 7
flip_mod(7) = 5

flip_abs(5) = 7
flip_abs(7) = 5

flip_array(5) = 5
flip_array(7) = 7

*/

 



answered Mar 31 by avibootz

Related questions

...