Files
lynchmark.com/tests/2_convex_hull/outputs/google_gemini-3-flash-preview TEMP_0.35.js
T

28 lines
807 B
JavaScript

export const findConvexHull = async (points) => {
const _ = await import('https://cdn.jsdelivr.net/npm/lodash-es/+esm');
const sorted = _.sortBy(_.uniqWith(points, _.isEqual), ['x', 'y']);
if (sorted.length < 3) return sorted;
const buildChain = (pts) => {
const hull = [];
for (const p of pts) {
while (hull.length >= 2) {
const a = hull[hull.length - 2];
const b = hull[hull.length - 1];
if ((b.x - a.x) * (p.y - a.y) - (b.y - a.y) * (p.x - a.x) > 0) break;
hull.pop();
}
hull.push(p);
}
return hull;
};
const lower = buildChain(sorted);
const upper = buildChain([...sorted].reverse());
return [...lower.slice(0, -1), ...upper.slice(0, -1)];
};
export default findConvexHull;
// Generation time: 17.558s
// Result: PASS