Az alábbi letöltési lehetőségek közül választhatsz: (
segítség)
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: us-ascii
Méret: 1 KB
PROGRAM abcode;
VAR
source: STRING;
len_src: INTEGER;
dest: ARRAY [1..255] OF CHAR;
PROCEDURE Dump(n_dest: INTEGER);
VAR
i: INTEGER;
BEGIN
FOR i:= 1 TO n_dest DO
BEGIN
Write(dest[i]);
END;
WriteLn;
END;
PROCEDURE Generate(i_src, i_dest: INTEGER; freechar: BOOLEAN);
VAR
cur: BYTE;
prev: BYTE;
ch0: CHAR;
BEGIN
INC(i_src);
IF (i_src > len_src) THEN
BEGIN
Dump(i_dest);
EXIT;
END;
cur:= ORD(source[i_src])-ORD('0');
IF cur > 0 THEN
BEGIN
dest[i_dest+1]:= CHR( ORD('A') + cur - 1 );
Generate(i_src, i_dest+1, TRUE);
END;
IF (freechar = TRUE) THEN
BEGIN
prev:= ORD(source[i_src-1])-ORD('0');
IF (prev = 1) OR ((prev = 2) AND (cur IN [0..6])) THEN
BEGIN
ch0:= dest[i_dest];
dest[i_dest]:= CHR(10*prev+cur+ORD('A')-1);
IF dest[i_dest] = '@' THEN
BEGIN
WriteLn('a');
HALT;
END;
Generate(i_src, i_dest, FALSE);
dest[i_dest]:= ch0;
END;
END;
END;
PROCEDURE Main;
VAR
s: STRING;
BEGIN
WHILE TRUE DO
BEGIN
s:= '';
Write('>'); ReadLn(s);
IF s = '0' THEN BREAK;
source:= s;
len_src:= Length(source);
Generate(0, 0, FALSE);
END;
END;
BEGIN
Main;
END.