?- 'a##'. c154-700#
このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1322562648/700
#  [1] 授業単元: C言語 
#  [2] 問題文(含コード&リンク): 
#  (1)20個の適当な整数が空白で区切られて保存されているファイルを作成せよ。 
#  このファイルに含まれる整数のうち最大のものを出力せよ。 
#   
#  (2)15個の適当な整数が空白で区切られて保存されているファイルを作成せよ。 
#  このファイルに含まれる整数を,その保存されている順とは逆順に”result.txt”というファイルに出力せよ。 
#   
#  

'20個の適当な整数が空白で区切られて保存されているファイルを作成せよ'(_ファイル) :-
        '20個の適当な整数'(_20個の適当な整数),
        空白で区切られて(_20個の適当な整数,_空白で区切られた文字列),
        open(_ファイル,write,Outstream),
        writef(Outstream,'%t\n',[_空白で区切られた文字列]),
        close(Outstream).

'20個の適当な整数'(_20個の適当な整数) :-
        length(_20個の適当な整数),
        findall(V,(
                    append(_,[V|_],_20個の適当な整数),
                    V is random(10001) - 500),
                _20個の適当な整数).

空白で区切られて(_20個の適当な整数,_空白で区切られた文字列) :-
        concat_atom(_20個の適当な整数,' ',_空白で区切られた文字列).

このファイルに含まれる整数のうち最大のものを出力せよ(_ファイル) :-
        open(_ファイル,read,Instream),
        get_lines(Instream,Lines),
        close(Instream),
        整数のうち最大のものを出力せよ(Lines).

整数のうち最大のものを出力せよ(Lines) :-
        行ならびを整数ならびに変換(Lines,_整数ならび),
        max(_整数ならび,_最大値),
        writef('%t\n',[_最大値]).

行ならびを整数ならびに変換(Lines,_整数ならび) :-
        findall(_要素ならび,(
                    append(_,[_行|_],Lines),
                    split(_行,[' '],_要素ならび)),
               LL),
        flat(LL,L),
        整数を選別する(L,_整数ならび).

整数を選別する(_要素ならび,_整数ならび) :-
        findall(_整数,(
                    append(_,[_要素|_],_要素ならび),
                    integer(_要素)),
                _整数ならび).