このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1276873238/633
#  問題 
#  13桁のISBNコードを検査せよ。 
#  例 
#  9784062772211 => OK 
#  9784150315684 => NG 
# 
# 

'13桁のISBNコードを検査せよ。'(_13桁のISBNコード) :-
        sub_atom(_13桁のISBNコード,0,12,1,_12桁の文字列),
        sub_atom(_13桁のISBNコード,12,1,0,_冗長符号),
        atom_chars(_12桁の文字列,_12要素の数字ならび),
        モジュラス10ウェイト3(_12要素の数字ならび,[1,3,1,3,1,3,1,3,1,3,1,3],0,_冗長符号).

モジュラス10ウェイト3([],[],S,_冗長符号) :-
        _冗長符号整数 is 10 - (S mod 10),
        atom_number(_冗長符号,_冗長符号整数).
モジュラス10ウェイト3([_数字|R1],[M|R2],S1,_冗長符号) :-
        atom_number(_数字,N),
        S2 is S1 + N * M,
        モジュラス10ウェイト3(R1,R2,S2,_冗長符号),!.