このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1267796762/721
#  【課題】Studentというクラスを宣言するプログラムを作成せよ。インスタンス変数には、氏名、生年月日、学籍番号を記録せよ。 
#  ただし、学籍番号は入学年度を表す二桁の整数、学部を表す一桁の整数、残り四桁の整数を組み合わせた七桁の整数で表現されるものとする。 
#  インスタンスメソッドとしては、以下のものは必須とする。 
#  名字を返すメソッド、名前を返すメソッド、誕生年を和暦で返すメソッド、誕生年を西暦で返すメソッド、入学年度を返すメソッド 
#  【形態】1. Javaアプリケーション  
#  【期限】1月11日  
#  【ver】linux 
#  【補足】あまり難しくしないでください。 
# 

データベース構造(学生,1,氏名).
データベース構造(学生,2,誕生日).
データベース構造(学生,3,学籍番号).

名字を返す(_学籍番号,_名字) :-
        学籍番号変換(_学籍番号,_整数学籍番号),
        学生(_氏名,_誕生日,_整数学籍番号),
        split(_氏名,[' ',',','-','_'],[_名字,_]).

名前を返す(_学籍番号,_名前) :-
        学籍番号変換(_学籍番号,_整数学籍番号),
        学生(_氏名,_誕生日,_整数学籍番号),
        split(_氏名,[' ',',','-','_'],[_,_名前]).

誕生年を和暦で返す(_学籍番号,_誕生日の和暦) :-
        学籍番号変換(_学籍番号,_整数学籍番号),
        学生(_氏名,_誕生日,_整数学籍番号),
        和暦西暦変換(_誕生日の和暦,_誕生日).

誕生年を西暦で返す(_学籍番号,_誕生日の西暦) :-
        学籍番号変換(_学籍番号,_整数学籍番号),
        学生(_氏名,_誕生日の西暦,_整数学籍番号).

入学年度を返す(_学籍番号,_入学年度) :-
        学籍番号変換(_学籍番号,_整数学籍番号),
        _入学年度 is _整数学籍番号 // 10000. 

学籍番号変換(_学籍番号,_学籍番号) :-
        integer(_学籍番号),!.

学籍番号変換(_学籍番号,_整数学籍番号) :-
        \+(integer(_学籍番号)),
        atom_chars(_学籍番号,Chars),
        すべてが数字(Chars),
        atom_to_term(_学籍番号,_整数学籍番号,_),!.

学籍番号変換(_学籍番号ではなくて氏名,_整数学籍番号) :-
        atom(_学籍番号ではなくて氏名),
        学生(_学籍番号ではなくて氏名,_,_整数学籍番号),!.

すべてが数字([]) :- !.
すべてが数字([A|R]) :-
        append(_,[A|_],['0','1','2','3','4','5','6','7','8','9']),
        すべてが数字(R).