このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1339338438/136
#  [1] 授業単元: 情報B 
#  [2] 問題文: アルファベット1文字目は1文字、2文字目は2文字、n文字目はn文字…分ずれるシーザー暗号を暗号・復号化それぞれ作りなさい。 
#  

アルファベット(['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z]).

'アルファベット1文字目は1文字、2文字目は2文字、n文字目はn文字…分ずれるシーザー暗号を暗号化する'(_文字列,_暗号化した文字列) :-
        findall(_暗号化した文字,(
                    sub_atom(_文字列,S,1,_,_文字),
                    S_2 is S + 1,
                    文字の暗号化(S_2,_文字,_暗号化した文字)),
                _暗号化した文字ならび),
        atomic_list_concat(_暗号化した文字ならび,_暗号化した文字列).

'アルファベット1文字目は1文字、2文字目は2文字、n文字目はn文字…分ずれるシーザー暗号を復号化する'(_文字列,_復号化した文字列) :-
        findall(_暗号化した文字,(
                    sub_atom(_文字列,S,1,_,_文字),
                    S_2 is S + 1,
                    文字の復号化(S_2,_文字,_暗号化した文字)),
                _暗号化した文字ならび),
        atomic_list_concat(_暗号化した文字ならび,_暗号化した文字列).

文字の暗号化(S,_文字,_暗号化した文字) :-
        アルファベット(L),
        nth1(Nth,L,_文字),
        ならびの回転(左方向,S_2,L,L1),
        nth1(Nth,L1,_暗号化した文字),!.

文字の復号化(S,_文字,_復号化した文字) :-
        アルファベット(L),
        nth1(Nth,L,_文字),
        ならびの回転(右方向,S_2,L,L1),
        nth1(Nth,L1,_復号化した文字),!.



%  ならびの回転/4