このディレクトリの索引

http://pc12.2ch.net/test/read.cgi/tech/1255709298/510
#  [1] プログラミング入門 
#  [2] 文字列sを逆に並べる関数reverse(s) を書け。 
#  さらにこの関数を使って、入力を行ごとに反転させるプログラムを作成せよ。という問題です。 

'reverse(s)'(S,_反転されたS) :- 
    atom_chars(S,S1), 
    反転(S1,S2), 
    atom_chars(S2,_反転されたS). 

反転([],[]). 
反転([A|R1],R) :- 
    反転(R,R2), 
    append(R2,[A],R). 

入力を行ごとに反転させる(_反転された入力行のならび) :- 
    get_line(_行), 
    入力を行ごとに反転させる(_行,_反転された入力行のならび). 

入力を行ごとに反転させる(end_of_file,[]) :- !. 
入力を行ごとに反転させる(_行,[_反転された行|R]) :- 
    'reverse(s)'(_行,_反転された行), 
    get_line(_次の行), 
    入力を行ごとに反転させる(_次の行,R).