このディレクトリの索引

'13桁のISBNコードを検査せよ。'(_13桁のISBNコード) :-
        '各桁を数値に変換した上で、12要素の数値ならびと最終桁の数に分離し'(_13桁のISBNコード,L,_最終桁の数),
        '12要素の数値ならびを逆順にして、順に3,1を掛けて加算し'(_13桁のISBNコード,_加算された数),
        '加算された数を10で割った余りをさらに10から引いたものが最終桁の数になる'(_加算された数,_最終桁の数).

'各桁を数値に変換した上で、12要素の数値ならびと最終桁の数に分離し'(_13桁のISBNコード,_12要素の数値ならび,_最終桁の数) :-
        atom_number(_13桁のISBNコード,_数値ならび),
        append(_12要素の数値ならび,[_最終桁の数],_数値ならび).

'12要素の数値ならびを逆順にして、順に3,1を掛けて加算し'(_12要素の数値ならび,_加算された数) :-
        reverse(_12要素の数値ならび,_反転した12要素の数値ならび),
        findsum(S,(
                    append(L0,[N1,N2|_],_反転した12要素の数値ならび),
                    要素数が偶数(L0),
                    S is N1 * 3 + N2 * 1),
                _加算された数).

'加算された数を10で割った余りをさらに10から引いたものが最終桁の数になる'(_加算された数,_最終桁の数) :-
        _最終桁の数 is 10 - (_加算された数 mod 10).

要素数が偶数(L) :-
        length(L,_要素数),
        0 is _要素数 mod 2.