Imports System
Module FlipNumbers
'
' Six different functions that accept 5 or 7
' and return the other number, without using If or Select Case.
'
' 1. Arithmetic sum trick: 5 + 7 = 12
Function FlipSum(x As Integer) As Integer
Return 12 - x
End Function
' 2. Product trick: 5 * 7 = 35
Function FlipProduct(x As Integer) As Integer
Return 35 \ x
End Function
' 3. XOR trick: 5 Xor 7 = 2
' x Xor 2 flips 5 ↔ 7
Function FlipXor(x As Integer) As Integer
Return x Xor 2
End Function
' 4. Modulo-based trick using divisibility:
' x Mod 7 = 0 → x is 7
' x Mod 5 = 0 → x is 5
' Boolean → Integer via CInt()
Function FlipMod(x As Integer) As Integer
Return 5 * CInt(x Mod 7 = 0) +
7 * CInt(x Mod 5 = 0)
End Function
' 5. Absolute-value trick: |x - 12| flips 5 ↔ 7
Function FlipAbs(x As Integer) As Integer
Return Math.Abs(x - 12)
End Function
' 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 As Integer) As Integer
Dim table() As Integer = {7, 5}
Dim index As Integer = (x - 5) \ 2
Return table(index)
End Function
Sub Main()
Console.WriteLine("flip_sum(5) = " & FlipSum(5))
Console.WriteLine("flip_sum(7) = " & FlipSum(7))
Console.WriteLine()
Console.WriteLine("flip_product(5) = " & FlipProduct(5))
Console.WriteLine("flip_product(7) = " & FlipProduct(7))
Console.WriteLine()
Console.WriteLine("flip_xor(5) = " & FlipXor(5))
Console.WriteLine("flip_xor(7) = " & FlipXor(7))
Console.WriteLine()
Console.WriteLine("flip_mod(5) = " & FlipMod(5))
Console.WriteLine("flip_mod(7) = " & FlipMod(7))
Console.WriteLine()
Console.WriteLine("flip_abs(5) = " & FlipAbs(5))
Console.WriteLine("flip_abs(7) = " & FlipAbs(7))
Console.WriteLine()
Console.WriteLine("flip_array(5) = " & FlipArray(5))
Console.WriteLine("flip_array(7) = " & FlipArray(7))
End Sub
End Module
' 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
'