fix conditions logic and make the script work. Needs to implement it in node/TS now.
This commit is contained in:
parent
98be16708b
commit
88f231bd1f
@ -1,7 +1,7 @@
|
|||||||
// Constants
|
// Constants
|
||||||
let MIN_DISTANCE = 80;
|
let MIN_DISTANCE = 15;
|
||||||
let MAX_PER_GROUP = 3;
|
let MAX_PER_GROUP = 3;
|
||||||
let NB_USERS = 10;
|
let NB_USERS = 4;
|
||||||
|
|
||||||
// Utils
|
// Utils
|
||||||
let rand = function(min, max) {
|
let rand = function(min, max) {
|
||||||
@ -15,11 +15,13 @@ let users = [];
|
|||||||
for(let i = 1; i <= NB_USERS; i++) {
|
for(let i = 1; i <= NB_USERS; i++) {
|
||||||
let user = {};
|
let user = {};
|
||||||
user.id = rand(0,99999);
|
user.id = rand(0,99999);
|
||||||
user.X = rand(0, 60);
|
user.X = rand(0, 40);
|
||||||
user.Y = rand(0, 60);
|
user.Y = rand(0, 40);
|
||||||
users.push(user);
|
users.push(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log(users);
|
||||||
|
|
||||||
// Compute distance between each user
|
// Compute distance between each user
|
||||||
let computeDistance = function(users) {
|
let computeDistance = function(users) {
|
||||||
let i = 0;
|
let i = 0;
|
||||||
@ -27,7 +29,7 @@ let computeDistance = function(users) {
|
|||||||
|
|
||||||
users.forEach(function(user1, key1) {
|
users.forEach(function(user1, key1) {
|
||||||
users.forEach(function(user2, key2) {
|
users.forEach(function(user2, key2) {
|
||||||
if(key1 !== key2 && key1 < key2) {
|
if(key1 < key2) {
|
||||||
let distanceObj = {};
|
let distanceObj = {};
|
||||||
distanceObj.distance = Math.sqrt(Math.pow(user2.X - user1.X, 2) + Math.pow(user2.Y - user1.Y, 2));
|
distanceObj.distance = Math.sqrt(Math.pow(user2.X - user1.X, 2) + Math.pow(user2.Y - user1.Y, 2));
|
||||||
distanceObj.first = user1;
|
distanceObj.first = user1;
|
||||||
@ -46,18 +48,19 @@ let computeDistance = function(users) {
|
|||||||
let createGroups = function(distances) {
|
let createGroups = function(distances) {
|
||||||
let i = 0;
|
let i = 0;
|
||||||
let groups = [];
|
let groups = [];
|
||||||
let alreadyInGroup = [];
|
let alreadyInAGroup = [];
|
||||||
|
|
||||||
for(let j = 0; j < distances.length; j++) {
|
for(let j = 0; j < distances.length; j++) {
|
||||||
let dist = distances[i];
|
let dist = distances[j];
|
||||||
|
|
||||||
if(dist.distance <= MIN_DISTANCE) {
|
if(dist.distance <= MIN_DISTANCE) {
|
||||||
if(typeof groups[i] === 'undefined') {
|
if(typeof groups[i] === 'undefined') {
|
||||||
groups[i] = [];
|
groups[i] = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!groups[i].indexOf(dist.first) && typeof alreadyInGroup[dist.first.id] === 'undefined') {
|
if(groups[i].indexOf(dist.first) === -1 && typeof alreadyInAGroup[dist.first.id] == 'undefined') {
|
||||||
groups[i].push(dist.first);
|
groups[i].push(dist.first);
|
||||||
alreadyInGroup [dist.first.id] = true;
|
alreadyInAGroup[dist.first.id] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(groups[i].length === MAX_PER_GROUP) {
|
if(groups[i].length === MAX_PER_GROUP) {
|
||||||
@ -69,9 +72,9 @@ let createGroups = function(distances) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!groups[i].indexOf(dist.second) && typeof alreadyInGroup[dist.second.id] === 'undefined') {
|
if(groups[i].indexOf(dist.second) === -1 && typeof alreadyInAGroup[dist.second.id] == 'undefined') {
|
||||||
groups[i].push(dist.second);
|
groups[i].push(dist.second);
|
||||||
alreadyInGroup [dist.second.id] = true;
|
alreadyInAGroup [dist.second.id] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -81,6 +84,7 @@ let createGroups = function(distances) {
|
|||||||
|
|
||||||
let distances = computeDistance(users);
|
let distances = computeDistance(users);
|
||||||
let groups = createGroups(distances);
|
let groups = createGroups(distances);
|
||||||
|
|
||||||
// TODO : Créer une méthode pour checker la distance entre les membres du groupes pour savoir s'il faut les dissoudre ou non
|
// TODO : Créer une méthode pour checker la distance entre les membres du groupes pour savoir s'il faut les dissoudre ou non
|
||||||
|
|
||||||
console.log(distances);
|
console.log(distances);
|
||||||
|
Loading…
Reference in New Issue
Block a user