/*
Six different functions that accept 5 or 7
and return the other number, without using if/switch.
*/
// 1. Arithmetic sum trick: 5 + 7 = 12
function flipSum(x) {
return 12 - x;
}
// 2. Product trick: 5 * 7 = 35
function flipProduct(x) {
return 35 / x;
}
// 3. XOR trick: 5 ^ 7 = 2
// x ^ 2 flips 5 ↔ 7
function flipXor(x) {
return x ^ 2;
}
// 4. Modulo-based trick using divisibility:
// x % 7 === 0 → x is 7
// x % 5 === 0 → x is 5
// Boolean → number via Number()
function flipMod(x) {
return 5 * Number(x % 7 === 0)
+ 7 * Number(x % 5 === 0);
}
// 5. Absolute-value trick: |x - 12| flips 5 ↔ 7
function flipAbs(x) {
return Math.abs(x - 12);
}
// 6. Array lookup using arithmetic index:
// For x = 5 → (5 - 5) / 2 = 0 → table[0] = 7
// For x = 7 → (7 - 5) / 2 = 1 → table[1] = 5
function flipArray(x) {
const table = [7, 5];
const index = (x - 5) / 2;
return table[index];
}
// --- Test functions ---
console.log("flip_sum(5) =", flipSum(5));
console.log("flip_sum(7) =", flipSum(7));
console.log();
console.log("flip_product(5) =", flipProduct(5));
console.log("flip_product(7) =", flipProduct(7));
console.log();
console.log("flip_xor(5) =", flipXor(5));
console.log("flip_xor(7) =", flipXor(7));
console.log();
console.log("flip_mod(5) =", flipMod(5));
console.log("flip_mod(7) =", flipMod(7));
console.log();
console.log("flip_abs(5) =", flipAbs(5));
console.log("flip_abs(7) =", flipAbs(7));
console.log();
console.log("flip_array(5) =", flipArray(5));
console.log("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) = 7
flip_array(7) = 5
*/