このディレクトリの索引
#  座標が[[X1,Y1],[X2,Y2],... [Xn,Yn]]のように保持されている。このなかで
#  最も二点間の距離が近い二つの座標を取り除く述語を定義しなさい。

座標ならびから最短の二座標を取り除く(_座標ならび,_最短の二座標を取り除いた座標ならび) :-
        findmin([_二点間の距離,[X1,Y1],[X2,Y2]],(
                    組み合わせ(_座標ならび,2,[[X1,Y1],[X2,Y2]]),
                    _二点間の距離 is sqrt((X2-X1) * (X2-X1) + (Y2-Y1) * (Y2-Y1)),
                [_,[X1,Y1],[X2,Y2]]),
        ならびから一要素だけ削除([X1,Y1],_座標ならび,_座標ならびの一),
        ならびから一要素だけ削除([X2,Y2],_座標ならびの一,_最短の二座標を取り除いた座標ならび).

ならびから一要素だけ削除(_削除する要素,_座標ならび,_一要素だけ削除されたならび) :-
        select(_削除する要素,_座標ならび,_一要素だけ削除されたならび),!.