How to represent the ABCs as a 5-letter binary code using A for 0 and B for 1 in Pascal

1 Answer

0 votes
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

*)

 



answered Jun 3 by avibootz

Related questions

...