Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
23
Task/Caesar-cipher/Picat/caesar-cipher.picat
Normal file
23
Task/Caesar-cipher/Picat/caesar-cipher.picat
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
main =>
|
||||
S = "All human beings are born free and equal in dignity and rights.",
|
||||
println(S),
|
||||
println(caesar(S,5)),
|
||||
println(caesar(caesar(S,5),-5)),
|
||||
nl.
|
||||
|
||||
caesar(String, N) = Cipher =>
|
||||
Lower = [chr(I): I in 97..122],
|
||||
Upper = [chr(I): I in 65..90],
|
||||
M = create_map(Lower, Upper, N),
|
||||
% If a char is not in a..zA..z then show it as it is.
|
||||
Cipher := [M.get(C,C) : C in String].
|
||||
|
||||
create_map(Lower,Upper, N) = M =>
|
||||
M = new_map(),
|
||||
Len = Lower.length,
|
||||
foreach(I in 1..Len)
|
||||
II = (N+I) mod Len,
|
||||
if II == 0 then II := Len end, % Adjust for 1 based
|
||||
M.put(Upper[I],Upper[II]),
|
||||
M.put(Lower[I],Lower[II])
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue