Imports System
Imports System.Text
Module ABCode
' a = AAAAA -> 00000 -> 0
' b = AAAAB -> 00001 -> 1
' c = AAABA -> 00010 -> 2
' d = AAABB -> 00011 -> 3
' e = AABAA -> 00100 -> 4
' f = AABAB -> 00101 -> 5
' g = AABBA -> 00110 -> 6
' Convert integer n (0–31) into 5-letter A/B code
Function toAB(n As Integer) As String
Dim outStr As New StringBuilder()
For i As Integer = 4 To 0 Step -1
Dim bit As Integer = (n >> i) And 1 ' extract bit
outStr.Append(If(bit = 1, "B", "A"))
Next
Return outStr.ToString()
End Function
Sub Main()
For ch As Integer = Convert.ToInt32("a"c) To Convert.ToInt32("z"c)
Dim letter As Char = Convert.ToChar(ch)
Dim value As Integer = ch - Convert.ToInt32("a"c) ' a=0, b=1, c=2...
Dim code As String = toAB(value)
Console.WriteLine(letter & " -> " & value & " -> " & code)
Next
End Sub
End Module
'
' run:
'
' a -> 0 -> AAAAA
' b -> 1 -> AAAAB
' c -> 2 -> AAABA
' d -> 3 -> AAABB
' e -> 4 -> AABAA
' f -> 5 -> AABAB
' g -> 6 -> AABBA
' h -> 7 -> AABBB
' i -> 8 -> ABAAA
' j -> 9 -> ABAAB
' k -> 10 -> ABABA
' l -> 11 -> ABABB
' m -> 12 -> ABBAA
' n -> 13 -> ABBAB
' o -> 14 -> ABBBA
' p -> 15 -> ABBBB
' q -> 16 -> BAAAA
' r -> 17 -> BAAAB
' s -> 18 -> BAABA
' t -> 19 -> BAABB
' u -> 20 -> BABAA
' v -> 21 -> BABAB
' w -> 22 -> BABBA
' x -> 23 -> BABBB
' y -> 24 -> BBAAA
' z -> 25 -> BBAAB
'