このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1258158172/497
#  [1] 授業単元:C 
#  [2] 問題文(含コード&リンク):http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10200.txt
#
# 初期設定された文字列の順序を逆に並べ替えるプログラムを作成せよ。
# ただし、並べ替える部分は関数とし、文字列の長さは最大255文字とする

% Prolog 初期設定されたというところが微妙。Prologだと・・・かな

初期設定された文字列の順序を逆に並べ替える :-
    retract('(初期)設定文字列'(_文字列)),
    文字列の反転(_文字列,_反転された文字列),
    asserta('(初期)設定文字列'(_反転された文字列)).

文字列の反転(_文字列,_反転された文字列) :-
    atom_chars(_文字列,Chars),
    reverse(Chars,RChars),
    atom_chars(_反転された文字列,RChars).

文字列の先頭と末尾から対にして取り出す(_文字列,C1,C2) :-
        sub_atom(_文字列,S,1,R,C1),
        sub_atom(_文字列,R,1,_,C2).

ならびの先頭と末尾から対にして取り出す(_ならび,C1,C2) :-
        append(L0,[C1|L1],_ならび),
        length(L0,Len),
        length(R,Len),
        append(_,[C2|R],_ならび).