const task = (n) => {
const points = [];
const linesArr = [];
dotGen(n);
mkLine(points);
linesArr.map(lineLength);
const avg = linesArr.reduce((a, b) => a.len + b.len) / linesArr.length;
console.log(linesArr);
console.log(avg);
function dotGen(n) {
for (let i = 1; i <= n; i++) {
points.push({
x: Math.random(),
y: Math.random()
})
}
}
function mkLine(points) {
for (let i = 0; i < points.length - 1; i++) {
for (let j = i + 1; j < points.length; j++) {
linesArr.push({
start: {
x: points[i].x,
y: points[i].y
},
end: {
x: points[j].x,
y: points[j].y
},
len: 0
})
}
}
}
function lineLength(line) {
line.len = Math.sqrt((line.end.x - line.start.x) ** 2 + (line.end.y - line.start.y) ** 2)
}
Y29uc3QgdGFzayA9IChuKSA9PiB7CiAgICBjb25zdCBwb2ludHMgPSBbXTsKICAgIGNvbnN0IGxpbmVzQXJyID0gW107CgogICAgZG90R2VuKG4pOwogICAgbWtMaW5lKHBvaW50cyk7CiAgICBsaW5lc0Fyci5tYXAobGluZUxlbmd0aCk7CiAgICBjb25zdCBhdmcgPSBsaW5lc0Fyci5yZWR1Y2UoKGEsIGIpID0+IGEubGVuICsgYi5sZW4pIC8gbGluZXNBcnIubGVuZ3RoOwogICAgY29uc29sZS5sb2cobGluZXNBcnIpOwogICAgY29uc29sZS5sb2coYXZnKTsKCiAgICBmdW5jdGlvbiBkb3RHZW4obikgewogICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgICAgICBwb2ludHMucHVzaCh7CiAgICAgICAgICAgICAgICB4OiBNYXRoLnJhbmRvbSgpLAogICAgICAgICAgICAgICAgeTogTWF0aC5yYW5kb20oKQogICAgICAgICAgICB9KQogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBta0xpbmUocG9pbnRzKSB7CiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoIC0gMTsgaSsrKSB7CiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgbGluZXNBcnIucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogcG9pbnRzW2ldLngsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IHBvaW50c1tpXS55CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBlbmQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgeDogcG9pbnRzW2pdLngsCiAgICAgICAgICAgICAgICAgICAgICAgIHk6IHBvaW50c1tqXS55CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBsZW46IDAKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gbGluZUxlbmd0aChsaW5lKSB7CiAgICAgICAgbGluZS5sZW4gPSBNYXRoLnNxcnQoKGxpbmUuZW5kLnggLSBsaW5lLnN0YXJ0LngpICoqIDIgKyAobGluZS5lbmQueSAtIGxpbmUuc3RhcnQueSkgKiogMikKICAgIH0K