このディレクトリの索引
# 課題8 暗号文を作成するプログラム ファイル名(AxP21xxx_kadai8_angou.java)
# 適当な文字列を入力して、暗号化するプログラムである。
# 暗号キーは2桁とし、暗号文は奇数番目と偶数番目の文字位置を、
# 暗号キーの値だけ交互にずらして作成する。
# なお使用する文字種は[!]から[z]までの90 個とする(0x21〜0x7A)
# 。またzを越えたら!に戻すこと。
# (例)暗号キーが「16」のとき
# 元の文字列 暗号文字列
# b u n k y o → c ! o q z u
# +1 +6 +1 +6 +1 +6

文字列の暗号化(_鍵整数,_元の文字列,_暗号文字列) :- 
    integer(_鍵整数), 
    _鍵整数>=10 
    _鍵整数=<99, 
    atom_codes(_元の文字列,Codes), 
    _奇数番目の鍵 is _鍵整数 // 10, 
    _偶数番目の鍵 is _鍵整数 mod 10, 
    文字コードによる暗号化(_奇数番目の鍵,_偶数番目の鍵,Codes,_暗号Codes), 
    atom_codes(_暗号文字列,_暗号Codes). 

文字コードによる暗号化(_,_,[],[]) :- !. 
文字コードによる暗号化(_鍵1,_鍵2,[A|R1],[B|R2]) :- 
    一文字の暗号化(_鍵1,A,B), 
    文字コードによる暗号化(_鍵2,_鍵1,R1,R2). 

一文字の暗号化(_変位,_文字コード,_暗号化された文字コード) :- 
    _文字コード+_変位 =< 122,!, 
    _暗号化された文字コード is _文字コード+_変位. 
一文字の暗号文字化(_変位,_文字コード,_暗号化された文字コード) :- 
    _文字コード+_変位 >122,!, 
    _暗号化された文字コード is _文字コード+_変位-90.