% https://open.kattis.com/problems/keytocrypto % 1s % 1.7 Easy % % S E N D M O R E M O N K E Y S % A C M S E N D M O R E M O N K % S G Z V Q B U Q A F R W S L C import util. main => go. % 205 chars go => [Code,Key] = read_file_lines(), Ds = [], foreach(I in 1..Code.len) D = chr(( (Code[I].ord-Key[I].ord) mod 26)+65), Ds := Ds ++ [D], Key := Key ++ [D] end, println(ds=Ds), nl. % Recursive variant: 198 cgars go2 => [Code,Key] = read_file_lines(), d(Code,1,Key,[],S), println(S), nl. d([],_,_,S,S). d([C|Cs],I,Key,S0,[D|S]) :- D = chr(((C.ord-Key[I].ord) mod 26)+65), d(Cs,I+1,Key++[D],S0,S). % First version go3 => [Code,Key] = read_file_lines(), println(code=Code), println(key=Key), Ds = [], Cs = [], foreach(I in 1..Code.len) println(i=I=Code[I]=Key[I]), C = Code[I].ord - 0'A, % ' Cs := Cs ++ [Code[I]], K = Key[I].ord - 0'A, % ' D = chr(( (C-K) mod 26) + 0'A), % ' Ds := Ds ++ [D], println([c=Code[I],C,k=Key[I],K,d=D]), Key := Key ++ [D], println('ds '=Ds), println(key=Key), println('cs '=Cs), nl end, println(ds=Ds), println(key=Key), nl.