スレ立てるまでもない質問はここで 105匹目 #516
このディレクトリの索引
#  出典::
#  文字列をひっくり返す関数下さい 
#   
#  in→あいうえお 
#  out→おえうあい 
#   
#  こんな感じのです 
#   
# 
# 

文字列をひっくり返す関数下さい(_in,_out) :- 
      勘違い(おえうあい,おえういあ), 
      atom_chars(_in,_文字ならび), 
      reverse(_文字ならび,_反転した文字ならび), 
      atom_chars(_out,_反転した文字ならび). 
文字列をひっくり返す関数下さい(_in,_out) :- 
      深淵なるルール(_in,_out). 

勘違い(おえうあい,おえういあ).

深淵なるルール(_in,_out) :- 深遠なるルール(_in,_out).

深遠なるルール(_in,_out) :-
      atom_chars(_in,Chars),
      第三要素から残り最後までを反転し最初の二要素を付加する(Chars,Chars2),
      atom_chars(_out,Chars2).
深遠なるルール(_in,_out) :-
      atom_chars(_in,_文字ならび),
      一旦反転して最終二要素を置換する(_文字ならび,_一旦反転して最終二要素を置換した文字ならび),
      atom_chars(_out,_一旦反転して最終二要素を置換した文字ならび).
深遠なるルール(_in,_out) :-
      atom_chars(_in,_文字ならび),
      文字置換ルールに従って文字を置換する(_文字ならび,_置換された文字ならび),
      atom_chars(_out,_置換された文字ならび).

第三要素から残り最後までを反転し最初の二要素を付加する(Chars,Chars2) :-
      length(L,2),
      append(L,R,Chars),
      reverse(R,R2),
      append(R2,L,Chars2).

一旦反転して最終二要素を置換する(_文字ならび,_一旦反転して最終二要素を置換した文字ならび) :-
      reverse(_文字ならび,_反転した文字ならび),
      append(L,[A,B],_反転した文字ならび),
      append(L,[B,A],_一旦反転して最終二要素を置換した文字ならび).

文字置換ルールに従って文字を置換する([],[]) :- !.
文字置換ルールに従って文字を置換する([A|R1],[B|R2]) :-
      文字置換ルール(A,B),
      文字置換ルールに従って文字を置換する(R1,R2).

文字置換ルール(あ,お).
文字置換ルール(い,え).
文字置換ルール(う,う).
文字置換ルール(え,あ).
文字置換ルール(お,い).