このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1320365280/625
#  [1] 授業単元:C言語 
#  [2] 問題文:123, 1.23, 1.2.3という数字を入力したとき、 
#         整数、小数、使用できない数字という分類に分けよ。 
#  

'123, 1.23, 1.2.3という数字を入力したとき、整数、小数、使用できない数字という分類に分けよ。'(_整数分類ならび,_小数分類ならび,_使用できない数字分類ならび) :-
        split('123, 1.23, 1.2.3',[',',' '],L),
        '整数、小数、使用できない数字という分類'(L,_整数分類ならび,_小数分類ならび,_使用できない数字分類ならび).

'整数、小数、使用できない数字という分類'([],[],[],[]).
'整数、小数、使用できない数字という分類'([A|R1],R2,R3,[A|R4]) :-
        'Aが使用できない数字'(A),
        '整数、小数、使用できない数字という分類'(R1,R2,R3,R4),!.
'整数、小数、使用できない数字という分類'([A|R1],[A|R2],R3,R4) :-
        'Aが整数'(A),
        '整数、小数、使用できない数字という分類'(R1,R2,R3,R4),!.
'整数、小数、使用できない数字という分類'([A|R1],R2,[A|R3],R4) :-
        'Aが小数(A),
        '整数、小数、使用できない数字という分類'(R1,R2,R3,R4).
'整数、小数、使用できない数字という分類'([A|R1],R2,R3,[A|R4]) :-
        'Aがエラーではないが整数でも小数でもない',
        '整数、小数、使用できない数字という分類'(R1,R2,R3,R4),!.

'Aが使用できない数字'(A) :-
        \+(catch(atom_to_term(A,_,_),_,fail)).

'Aが整数'(A) :-
        atom_to_term(A,X,_),
        integer(X).

'Aが小数'(A) :-
        atom_to_term(A,X,_),
        float(X).

'Aがエラーではないが整数でも小数でもない'.