このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1263824755/351
#  [1] 授業単元:プログラミング演習 
#  [2] 問題文(含コード&リンク): 
#  □1□2□3□4□5□6□7□8□9 
#  の□に四則の演算子(+,−)や空白を入れて100になるような 
#  小町算の全ての解を求めるプログラムを作成すること
#   
#  例えば 
#  12 + 3 - 4 + 5 + 67 + 8 + 9 = 100 
#  123 - 45 - 67 + 89 = 100 
#  

'□1□2□3□4□5□6□7□8□9の□に四則の演算子(+,−)や空白を入れて100になるような小町算の全ての解を求める'(_評価文) :-
        演算子や空白を適用([_符号1,_符号2,_符号3,_符号4,_符号5,_符号6,_符号7,_符号8,_符号9]),
        atomic_list_concat([_符号1,1,_符号2,2,_符号3,3,_符号4,4,_符号5,5,_符号6,6,_符号7,7,_符号8,8,_符号9,9],_評価文),
        atom_to_term(_評価文,_式,_),
        100 is _式.

演算子や空白を適用([]).
演算子や空白を適用([A|R]) :-
        member(A,[+,-,'']),
        演算子や空白を適用(R).