|
% PROCEDURA PER CIFRARE UNA STRINGA MEDIANTE CIFRARIO A SCORRIMENTO
% shift(L, N, A)
% "A è la stringa (atomo) cifrata mediante cifrario a scorrimento
% con chiave (scorrimento) N, a partire dalla lista L"
shift(L, N, A) :- nonvar(L), nonvar(N), shift_list(L, N, L1), name(A, L1).
% shift_list(L, N, L1)
% "L1 è la lista cifrata mediante cifrario a scorrimento
% con chiave (scorrimento) N, a partire dalla lista L"
shift_list([], _, []).
shift_list([HEAD|TAIL], N, [HEAD1|TAIL1]) :-
shift_letter(HEAD, N, HEAD1), shift_list(TAIL, N, TAIL1).
% shift_letter(T, N, U)
% "la lettera U è ottenuta traslando la lettera T di
% N posizioni all'interno dell'alfabeto (di 26 lettere)
shift_letter(T, N, U) :-
U1 is T+N, U1 < 97, N1 is N+26, shift_letter(T, N1, U), !.
shift_letter(T, N, U) :-
U1 is T+N, U1 > 122, N1 is N-26, shift_letter(T, N1, U), !.
shift_letter(T, N, U) :- U is T+N.
|
|