いろんな言語で宿題スレ 第三編

このエントリーをはてなブックマークに追加
569デフォルトの名無しさん
>>559
% Prolog

'SQL操作に対応する述語定義'(X) :-
  findall([TANNINN,NAME,SUGAKU,KOKUGO],
  (
    findall(TANNINN,'SEISEKIHYOU'(TANNINN,_,_,_,_,_,_),L1),sort(L1,L2),
    'SEISEKIHYOU'(TANNINN,NAME,KOKUGO,SUUGAKU,RIKA,SYAKAI,EIGO),
    SUUGAKU>=KOKUGO,SUUGAKU >= RIKA,SUUGAKU>=SYAKAI,SUUGAKU>=EIGO,
    U1 is (KOKUGO+SUUGAKU+RIKA+SYAKAI+EIGO)/5.0,
    findall(AVGs,(member(TANNINN2,L2),findavg([KOKUGO2,SUUGAKU2,RIKA2,SYAKAI2,EIGO2],'SEISEKIHYOU'(TANNINN2,NAME2,KOKUGO2,SUUGAKU2,RIKA2,SYAKAI2,EIGO2),AVGs)),L3),
    sum(L3,SUM1),
    U2 is SUM1 / 5.0,
    U1 >= U2,
    findavg(KOKUGO3,('SEISEKIHYOU'(TANNINN,_,KOKUGO3,_,_,_,_),KOKUGOAVG),
    KOKUGO > AVGKOKUGO)
  ),L4),
  sort(L4,L5),
  member(X,L5).