const type: point is new struct var float: x is 0.0; var float: y is 0.0; end struct; const func float: distance (in point: p1, in point: p2) is return sqrt((p1.x-p2.x)**2+(p1.y-p2.y)**2); const func array point: closest_pair (in array point: points) is func result var array point: result is 0 times point.value; local var float: dist is 0.0; var float: minDistance is Infinity; var integer: i is 0; var integer: j is 0; var integer: savei is 0; var integer: savej is 0; begin for i range 1 to pred(length(points)) do for j range succ(i) to length(points) do dist := distance(points[i], points[j]); if dist < minDistance then minDistance := dist; savei := i; savej := j; end if; end for; end for; if minDistance <> Infinity then result := [] (points[savei], points[savej]); end if; end func;