このディレクトリの索引
#  整列したならびが与えられたとしてその上位N名を入選とする。ただし、入選線上者が
#  多数いる場合は、そのすべてを入選者とする

'整列したならびが与えられたとしてその上位N名を入選とする。ただし、入選線上者が多数いる場合は、そのすべてを入選者とする'(_整列したならび,_上位N名,_入選ならび) :-
        入選同着問題(_整列したならび,_上位N名,_入選ならび).

入選同着問題(_整列したならび,_入選者数,_入選ならび) :- 
        integer(_入選者数),
        length(Ln,_入選者数),
        入選同着問題(_整列したならび,Ln,_入選ならび).
入選同着問題([],_,[]) :- !.
入選同着問題([A,A|R1],[_],[A|L0]) :-
        append(L0,[B|_],[A|R1]),
        \+(A=B),
        all(L0,A),!.
入選同着問題([A,B|R1],[_],[A]) :-
        \+(A=B),!.
入選同着問題([A|R1],[_|Ln],[A|R3]) :-
        入選同着問題(R1,Ln,R3).