15 lines
513 B
Text
15 lines
513 B
Text
class Point{
|
|
fcn init(_x,_y){ var[const] x=_x, y=_y; }
|
|
fcn distance(p){ (p.x-x).hypot(p.y-y) }
|
|
fcn toString { String("Point(",x,",",y,")") }
|
|
}
|
|
|
|
// find closest two points using brute ugly force:
|
|
// find all combinations of two points, measure distance, pick smallest
|
|
fcn closestPoints(points){
|
|
pairs:=Utils.Helpers.pickNFrom(2,points);
|
|
triples:=pairs.apply(fcn([(p1,p2)]){ T(p1,p2,p1.distance(p2)) });
|
|
triples.reduce(fcn([(_,_,d1)]p1,[(_,_,d2)]p2){
|
|
if(d1 < d2) p1 else p2
|
|
});
|
|
}
|