このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1248012902/510
#  【 課題 】http://ime.nu/rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/842.txt
# (1)学生の姓名を入力し、該当する学生の学籍番号、学年、席次を表示する。
#    次のデータは学生の学籍番号、名前、欠席日数、席次を配列linesで格納したものです。
#    String[] lines = { "0001, 山田太郎,2,3,42", "0002, 田中一郎,2,6,31", "0003, 斎藤花子,2,2,4" };
#    splitとequalsメソッドを利用する。区切り記号はスペース。
#    引数 -n
# (2) (1)を利用して学生の名前の一部を入力し、該当する学生の学籍番号、名前、欠席日数を表示する。
#    引数 -q
# (3) (1)を利用して各学生の全てのデータを席次順に表示する。

学籍簿('0001', 山田太郎,2,3,42).
学籍簿('0002', 田中一郎,2,6,31).
学籍簿('0003', 斎藤花子,2,2,4).

学生の姓名を入力し、該当する学生の学籍番号、学年、席次を表示(_名前) :-
  学籍簿(_学籍番号,_名前,_欠席日数,_学年,_席次),
  write_formatted('%t,%t,%t,%t\n',[_名前,_学籍番号,学年,_席次]).

学生の名前の一部を入力し、該当する学生の学籍番号、名前、欠席日数を表示(_名前の一部) :-
  学籍簿(_学籍番号,_名前,_欠席日数,_学年,_席次),
  sub_atom(_名前,_,_,_,_名前の一部),
  write_formatted('%t,%t,%t,%t\n',[_名前の一部,_学籍番号,名前,_欠席日数]).

'各学生の全てのデータを席次順(昇順)に表示' :-
  findall([_学年,_席次],学籍簿(_学籍番号,_名前,_欠席日数,_学年,_席次),L1),
  sort(L1,L2),
  member([_学年,_席次],L2),
  学籍簿(_学籍番号,_名前,_欠席日数,_学年,_席次),
  write_formatted('%t,%t,%t,%t\n',[_名前,_学籍番号,学年,_席次]),
  fail.  
'各学生の全てのデータを席次順(昇順)に表示'.