このディレクトリの索引

'13桁のISBNコードを検査せよ。'(_13桁のISBNコード) :- '各桁を数値に変換した上で、12要素の数値ならびと最終桁の数に分離し'(_13桁のISBNコード,_12要素の数値ならび,_最終桁の数), '12要素の数値ならびを逆順にして、順に3,1を掛けて加算し'(_12要素の数値ならび,_加算された数), '加算された数を10で割った余りをさらに10から引いたものが最終桁の数になる'(_加算された数,_最終桁の数). '各桁を数値に変換した上で、12要素の数値ならびと最終桁の数に分離し'(_13桁のISBNコード,_12要素の数値ならび,_最終桁の数) :- 各桁を数値に変換した上で(_13桁のISBNコード,_13要素の数値ならび), '12要素の数値ならびと最終桁の数に分離し'(_13要素の数値ならび,_12要素の数値ならび,_最終桁の数). 各桁を数値に変換した上で(_13桁のISBNコード,_13要素の数値ならび) :- findall(_数値,各桁を数値に変換する(_13桁のISBNコード,_数値),_13要素の数値ならび). 各桁を数値に変換する(_13桁のISBNコード,_数値) :- sub_atom(_13桁のISBNコード,_,1,_,_数字), atom_number(_数字,_数値). '12要素の数値ならびと最終桁の数に分離し'(_13要素の数値ならび,_12要素の数値ならび,_最終桁の数) :- append(_12要素の数値ならび,[_最終桁の数],_13要素の数値ならび). '12要素の数値ならびを逆順にして、順に3,1を掛けて加算し'(_12要素の数値ならび,_加算された数) :- '12要素の数値ならびを逆順にして'(_12要素の数値ならび,_反転した12要素の数値ならび), '順に3,1を掛けて加算し'(_反転した12要素の数値ならび,_加算された数). '12要素の数値ならびを逆順にして'(_12要素の数値ならび,_反転した12要素の数値ならび) :- reverse(_12要素の数値ならび,_反転した12要素の数値ならび). '順に3,1を掛けて加算し'(_反転した12要素の数値ならび,_加算された数) :- findsum(S,'順に3,1を掛けて'(_反転した12要素の数値ならび,S),_加算された数). '順に3,1を掛けて'(_反転した12要素の数値ならび,S) :- 順に(_反転した12要素の数値ならび,N1,N2), '3,1を掛けて'(N1,N2,S). 順に(_反転した12要素の数値ならび,N1,N2) :- append(L0,[N1,N2|_],_反転した12要素の数値ならび), 要素数が偶数(L0). 要素数が偶数(L) :- length(L,_要素数), 0 is _要素数 mod 2. '3,1を掛けて'(N1,N2,S) :- S is N1 * 3 + N2 * 1. '加算された数を10で割った余りをさらに10から引いたものが最終桁の数になる'(_加算された数,_最終桁の数) :- _最終桁の数 is 10 - (_加算された数 mod 10). findsum(A,B,C) :- findall(A,B,L), sum_list(L,C).