このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1354393458/650
#  
#  81以下の自然数で九九に現れない数を昇順にすべて表示せよ。
#  

'81以下の自然数で九九に現れない数を昇順にすべて表示せよ。' :-
        '81以下の自然数で九九に現れない数を昇順にすべて'(_81以下の自然数で九九に現れない数ならび),
        '表示せよ。'(_81以下の自然数で九九に現れない数ならび).

'81以下の自然数で九九に現れない数を昇順にすべて'(_81以下の自然数で九九に現れない数ならび) :-
        '81以下の自然数ならび'(_81以下の自然数ならび),
        九九に現れる数ならび(_九九に現れる数ならび),
        '81以下の自然数で九九に現れない数を昇順にすべて'(_81以下の自然数ならび,_九九に現れる数ならび,_81以下の自然数で九九に現れない数ならび).

'81以下の自然数ならび'(_81以下の自然数ならび) :-
        findall(_数,between(1,81,_数),_81以下の自然数ならび).

九九に現れる数ならび(_九九に現れる数ならび) :-
        findall(_九九,(
                    九九(_九九)),
                _九九に現れる数ならび).

九九(_九九) :-
        between(1,9,_数_1),
        between(1,9,_数_2),
        _九九 is _数_1 * _数_2.

'81以下の自然数で九九に現れない数を昇順にすべて'([],_,[]) :- !.
'81以下の自然数で九九に現れない数を昇順にすべて'([_数|R1],_九九に現れる数ならび,[_数|R3]) :-
        九九に現れない数(_数,_九九に現れる数ならび),
        '81以下の自然数で九九に現れない数を昇順にすべて'(R1,_九九に現れる数ならび,R3),!.
'81以下の自然数で九九に現れない数を昇順にすべて'([_|R1],_九九に現れる数ならび,R3) :-
        '81以下の自然数で九九に現れない数を昇順にすべて'(R1,_九九に現れる数ならび,R3).

九九に現れない数(_数,_九九に現れる数ならび) :-
        \+(member(_数,_九九に現れる数ならび)).

'表示せよ。'(_81以下の自然数で九九に現れない数ならび) :-
        atomic_list_concat(_81以下の自然数で九九に現れない数ならび,' ',_表示文字列),
        writef('%t\n',[_表示文字列]).