program ABCode;
{$mode objfpc}
// 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: Integer): string;
var
i, bit: Integer;
outStr: string;
begin
outStr := '';
for i := 4 downto 0 do
begin
bit := (n shr i) and 1; // extract bit
if bit = 1 then
outStr := outStr + 'B'
else
outStr := outStr + 'A';
end;
Result := outStr;
end;
var
ch: Char;
value: Integer;
code: string;
begin
for ch := 'a' to 'z' do
begin
value := Ord(ch) - Ord('a'); // a=0, b=1, c=2...
code := toAB(value);
WriteLn(ch, ' -> ', value, ' -> ', code);
end;
end.
(*
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
*)