このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1311089619/638
#  [1] 授業単元:C言語プログラミング  
#  [2] 問題文(含コード&リンク): 4つの数字を入力して四則演算の組み合わせを考えて 
#  10になる数式を表示せよ。10になる数式がなければ"NG"と表示。 
#   入力できる数値は1〜9までとする。 
#  例) 
#  入:1 2 3 4 
#  答え:2×3+1×4  
#  

'4つの数字を入力して四則演算の組み合わせを考えて10になる数式を表示せよ。10になる数式がなければ"NG"と表示' :-
        '4つの数字を入力して'(N1,N2,N3,N4),
        順列([+,-,*,/],3,L),
        式文字列を構成する([N1,N2,N3,N4],L,_式文字列),
        atom_to_term(_式文字列,_式,_),
        10 is truncate(_式),
        write('%t\n',[_式文字列]),!.
'4つの数字を入力して四則演算の組み合わせを考えて10になる数式を表示せよ。10になる数式がなければ"NG"と表示' :-
        write('NG\n').

'4つの数字を入力して'(N1,N2,N3,N4) :-
        write('4つの整数を空白区切りで入力してください : '),
        readln([N1,N2,N3,N4]),
        すべて整数([N1,N2,N3,N4]).

式文字列を構成する(_値ならび,_符号ならび,_式文字列) :-
        式を構成するならびを生成(_値ならび,_符号ならび,_式を構成するならび),
        concat_atom(_式を構成するならび,_式文字列).

式を構成するならびを生成([N4],[],[N4]) :- !.
式を構成するならびを生成([N1,0|R1],[/|R2],R3) :- !,fail.
式を構成するならびを生成([N|R1],[_符号|R2],[N,_符号|R3]) :-
        式を構成するならびを生成(R1,R2,R3).

すべて整数([]).
すべて整数([N|R]) :-
        integer(N),
        すべて整数(R).