いろんな言語で宿題スレ 第三編at TECH
いろんな言語で宿題スレ 第三編 - 暇つぶし2ch103:デフォルトの名無しさん
09/12/26 09:17:55
>>102
% Prolog
'カラムとして、電話番号と氏名を持つ電話帳テーブルがある。この中で同姓同名が最も多い氏名'(_氏名ならび) :-
  findall(_氏名,clause(電話帳(_,_氏名),_),_氏名ならび),
quicksort(_氏名ならび,_整列された氏名ならび),
同姓同名が最も多いもの(_整列された氏名ならび,0,[],_氏名ならび).

同姓同名が最も多いもの(_整列された氏名ならび,_これまでの最大数,_氏名ならび1,_氏名ならび).
整列された氏名ならび=[A|R1],
要素の連続数(1,A,R1,X,R2),
最大値は(A,X,_これまでの最大値,_更新された最大値,_氏名ならび1,_氏名ならび2),
同姓同名が最も多いもの(R2,_更新された最大値,_氏名ならび2,_氏名ならび),!.
同姓同名が最も多いもの(_,_,_氏名ならび,_氏名ならび).

最大値は(_氏名,X,_これまでの最大値,X,_氏名ならび,[_氏名]) :- X @> _これまでの最大値,!.
最大値は(_氏名,X,_これまでの最大値,X,_氏名ならび,[_氏名|_氏名ならび]) :- X = _これまでの最大値,!.
最大値は(_,_,_これまでの最大値,_これまでの最大値,_氏名ならび,_氏名ならび).

要素の連続数(X,A,[],X,[]) :- !.
要素の連続数(X,A,[B|R],X,[B|R]) :- \+(A==B),!.
要素の連続数(M,A,[A|R1],X,R) :- M2 is M + 1,要素の連続数(M2,A,R1,X,R).


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch