|
% PROCEDURA PER CIFRARE E DECIFRARE UNA STRINGA MEDIANTE SCHEMA ROT-13
% rot13(L, A)
% "A è la stringa (atomo) cifrata / decifrata
% mediante schema Rot-13 a partire dalla lista L"
rot13(L, A) :- nonvar(L), rot13_list(L, L1), name(A, L1).
% rot13_list(L, L1)
% "L1 è la lista cifrata / decifrata mediante
% schema Rot-13 a partire dalla lista L"
rot13_list([], []).
rot13_list([HEAD|TAIL], [HEAD1|TAIL1]) :-
shift(HEAD, HEAD1), rot13_list(TAIL, TAIL1).
% shift(T, T1)
% "la lettera T1 è ottenuta traslando la lettera T di
% 13 posizioni all'interno dell'alfabeto (di 26 lettere)
shift(T, T1) :- T >= 97, T =< 109, T1 is T+13.
shift(T, T1) :- T >= 109, T =< 122, T1 is T-13.
|
|