JSFiddle - React, Tailwind, and code Playground
JavaScript
var data=[];
for (var i =0; i < 1000; i++) data.push([Math.round(Math.random()*100), Math.round(Math.random()*100)]);
function foo() {
console.time('profile');
var eqs = {};
for (var i=0; i<data.length; ++i) {
for (var j=0; j<i; ++j) {
var di = data[i];
var dj = data[j];
var slope, intercept;
if (dj[0] == di[0]) {
slope=Infinity;
intercept = dj[1];
} else {
slope = (dj[1]-di[1])/(dj[0]-di[0]);
intercept = di[1]-slope*di[0];
}
var key = slope+'.'+intercept;
if (key in eqs) {
var set = eqs[key];
if (set[set.length-1] != i)
set.push(i);
} else
eqs[key] = [j, i];
}
}
var best = [];
for (var key in eqs)
if (eqs.hasOwnProperty(key))
if (eqs[key].length > best.length)
best = eqs[key];
console.timeEnd('profile');
return;
for (var i=0; i<best.length; ++i)
console.log(data[best[i]]);
}
for (var i=0; i<5; ++i) foo();