このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1255277760/337
#  問題: 
#  ジョンにとって縁起のいい数字は4と7で, 
#  他はどうでもいい.ラッキーナンバーとは, 
#  縁起のいい数字を含んだ10進数である. 
#  整数aとbが与えられたとき,aとbの間にあるラッキーナンバーの個数を挙げよ. 
#   
#      オブジェクトの定義: 
#  クラス名 : TheLuckyNumbers 
#  メソッド名 : count 
#  引数の型 : int,int 
#  返値の型 : int 
#  メソッドの表記 : int count(ints,intb) 
#  として,公的メソッドとせよ. 
#  注: 
#  aの値は1から1,000,000,000まで 
#  bの値は1から1,000,000,000まで  
#   
#  TopCoderでグーグル先生に聞いたら出てきた問題を適当に張ってみる 
# 
# 

'整数aとbが与えられたとき,aとbの間にあるラッキーナンバーの個数'(_a,_b,_ラッキーナンバーの個数) :-
        _a > _b,
        '整数aとbが与えられたとき,aとbの間にあるラッキーナンバーの個数'(_b,_a,_ラッキーナンバーの個数).
'整数aとbが与えられたとき,aとbの間にあるラッキーナンバーの個数'(_a,_b,_ラッキーナンバーの個数) :-
        _a =< _b,
        ラッキーナンバーの個数(_a,_b,0,_ラッキーナンバーの個数),!.

ラッキーナンバーの個数(M,N,X,X) :- M > N,!.
ラッキーナンバーの個数(M,N,Y,X) :-
        number_codes(M,L),
        (member(52,L);member(55,L)),!,
        Y2 is Y + 1,
        M2 is M + 1,
        ラッキーナンバーの個数(M2,N,Y2,X),!.
ラッキーナンバーの個数(M,N,Y,X) :-
        M2 is M + 1,
        ラッキーナンバーの個数(M2,N,Y,X),!.