このディレクトリの索引

http://pc12.2ch.net/test/read.cgi/tech/1258158172/368
# [1] 授業単元: プログラミング実習
# [2] 問題文(含コード&リンク):
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10180.txt
#
# 〜課題1〜
# 3個のint型整数の最小値を返す関数
# int min3(int x,int y,int z)
# を作成せよ。(ただし、標準関数minは使用しないこと。)
#
# (実行例)
# 3個の整数を入力してください。
# 整数1:15
# 整数2:3
# 整数3:23
# 最も小さい値は3です。

'3個の整数の最小値を返す' :-
    write('3個の整数を入力してください。\n'),
    '3個の整数を得る'(1,[A|R]),
    最小値は(A,R,_最小値),
    write_formatted('最も小さい値は%tです。\n',[_最小値]).

最小値は(A,[],A).
最小値は(A,[B|R],X) :- A =< B,最小値は(A,R,X).
最小値は(A,[B|R],X) :- A > B,最小値は(B,R,X).

'3個の整数を得る'(N,[]) :- N > 3,!.
'3個の整数を得る'(N,[_整数|R]) :-
    write('整数%t:',[N]),
    get_integer(_整数),
    N2 is N + 1,

% Prolog 3個の整数を得るには以下のやり方もある。

'3個の整数を得る'(L) :-
    findall(_整数,(for(1,N,3),write('整数%t:',[N]),get_integer(_整数)),L).

    '3個の整数を得る'(R).