From 2a7bc10f6c011d19fb3b0e73068f7e1a9c30ace0 Mon Sep 17 00:00:00 2001 From: Raphael McSinyx Date: Sat, 8 Oct 2016 09:56:43 +0700 Subject: Initial commit --- daily/285easy/1enc.pas | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 daily/285easy/1enc.pas (limited to 'daily/285easy/1enc.pas') diff --git a/daily/285easy/1enc.pas b/daily/285easy/1enc.pas new file mode 100644 index 0000000..fb7c363 --- /dev/null +++ b/daily/285easy/1enc.pas @@ -0,0 +1,79 @@ +(* uuencoding *) + +var + fi, fo: text; + s: string[3] = 'CnX'; + n: cardinal = 0; + i: cardinal; + j: byte; + + +function enc(s: string): string; + var + c1, c2, c3: byte; + + begin + c1 := ord(s[1]); + if length(s) < 2 then + c2 := 0 + else + c2 := ord(s[2]); + if length(s) < 3 then + c3 := 0 + else + c3 := ord(s[3]); + + enc := chr(c1 div 4 + 32) + + chr(c1 mod 4 * 16 + c2 div 16 + 32) + + chr(c2 mod 16 * 4 + c3 div 64 + 32) + + chr(c3 mod 64 + 32) + end; + + +begin + assign(fi, '1enc.inp'); + assign(fo, '1enc.out'); + + reset(fi); + while not eof(fi) do + begin + read(fi, s[1]); + inc(n) + end; + if n = 0 then + writeln(fo, ' '); + + reset(fi); + rewrite(fo); + for i := 1 to n div 45 do + begin + write(fo, 'M'); + for j := 1 to 15 do + begin + read(fi, s); + write(fo, enc(s)) + end; + writeln(fo); + end; + + n := n mod 45; + if n > 0 then + begin + write(fo, chr(n + 32)); + for i := 1 to n div 3 do + begin + read(fi, s); + write(fo, enc(s)) + end; + if n mod 3 > 0 then + begin + read(fi, s); + writeln(fo, enc(s)) + end + else + writeln(fo) + end; + + close(fi); + close(fo) +end. -- cgit 1.4.1