このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1335517816/677
#  [1] 授業単元:C  
#  [2] 問題文(含コード&リンク): 
#   http://ime.nu/codepad.org/SZCwaCYd 
#  で入力した整数のうち2つ以上同じ値があった場合、 
#  「同じ値です」と表示するには、どんなif文書けばいい? 
#   
#  #include 
#  int main(){
#  	int a, b, c, t;
#  	scanf("%d", &a);
#  	scanf("%d", &b);
#  	if(a > b){
#  		t = a;
#  		a = b;
#  		b = t;
#  	}
#  	scanf("%d", &c);
#  	if(b > c){
#  		if(a > c){
#  			temp = a;
#  			a = c;
#  			c = t;
#  		}
#  		t = b;
#  		b = c;
#  		c = t;
#  	}
#  	printf("%d %d %d\n", a, b, c);
#  	return 0;
#  }
#  

'3つのデータを整列しながら入力する'(_a,_b,_c) :-
        'scanf("%d", &a);scanf("%d", &b);'(_a,_b),
        'if(a > b){t = a;a = b;b = t;}'(_a,_b,A1,B1),
        'scanf("%d", &c);'([_a,_b],_c),
        'if(b > c){if(a > c){t = a;a = c;c = t;}t = b;b = c;c = t;}'(A1,B1,_c,A,B,C),
        'printf("%d %d %d\n", a, b, c);'(A,B,C).        

'scanf("%d", &a);scanf("%d", &b);'(_a,_b) :-
        'scanf("%d", &a);'(_a),
        'scanf("%d", &b);'([_a],_b).

'scanf("%d", &a);'(_a) :-
        get_line(Line),
        '診断: scanf("%d", &a);'(Line,_a),!.
'scanf("%d", &a);'(_a) :-
        'scanf("%d", &a);'(_a).

'診断: scanf("%d", &a);'(Line,_a) :-
        atom_to_term(Line,_a,_),
        整数診断(Line,_a),!.

'scanf("%d", &b);'(_a,_b) :-
        get_line(Line),
        '診断: scanf("%d", &b);'(Line,_a,_b),!.
'scanf("%d", &b);'(_a,_b) :-
        'scanf("%d", &b);'(_a,_b).

'診断: scanf("%d", &b);'(Line,_a,_b) :-
        atom_to_term(Line,_b,_),
        整数診断(Line,_b),
        重複診断([_a],_b),!.

'if(a > b){t = a;a = b;b = t;}'(_a,_b,_b,_a) :-
        _a > _b,!.
'if(a > b){t = a;a = b;b = t;}'(_a,_b,_a,_b).

'scanf("%d", &c);'(L,_c) :-
        get_line(Line),
        '診断: scanf("%d", &c);'(Line,L,_c),!.
'scanf("%d", &c);'(L,_c) :-

        'scanf("%d", &c);'(L,_c).

'診断: scanf("%d", &c);'(Line,L,_c) :-
        atom_to_term(Line,_c,_),
        整数診断(Line,_c),
        要素重複診断(L,_c),!.

整数診断(Line,_c) :-
        integer(_c),!.
整数診断(Line,_c) :-
        writef('入力された %t からは整数が得られません。再入力をお願いします。\n',[Line]),
        fail.

要素重複診断(L,_c) :-
        \+(member(_c,L)),!.
要素重複診断(L,_c) :-
        writef('要素が重複しています。再入力をお願いします。\n').

'if(b > c){if(a > c){t = a;a = c;c = t;}t = b;b = c;c = t;}'(_a,_b,_c,A,C,B) :-
        _b > _c,
        'if(a > c){t = a;a = c;c = t;}'(_a,_c,A,C1),
        't = b;b = c;c = t;'(_b,C1,C,B),!.
'if(b > c){if(a > c){t = a;a = c;c = t;}t = b;b = c;c = t;}'(_a,_b,_c,_a,_b,_c).

'if(a > c){t = a;a = c;c = t;}'(_a,_c,_c,_a) :-
        _a > _c,!.
'if(a > c){t = a;a = c;c = t;}'(_a,_c,_a,_c).

't = b;b = c;c = t;'(_b,C1,C1,_b).

'printf("%d %d %d\n", a, b, c);'(_a,_b,_c) :-
        writef('%t %t %t\n',[_a,_b,_c]).