Skip to content

Instantly share code, notes, and snippets.

@walbinjr
Created May 20, 2017 13:23
Show Gist options
  • Save walbinjr/4a6cc530cc328cd90ca2d860e87f737d to your computer and use it in GitHub Desktop.
Save walbinjr/4a6cc530cc328cd90ca2d860e87f737d to your computer and use it in GitHub Desktop.
random select with rates
// https://jsfiddle.net/c7584nqt/2/
function isFair(player1, player2) {
let sum = player1.rate + player2.rate;
if (sum == 4 || sum == 1) {
return false;
}
return true;
}
let players = [
{ name: 'Apu', rate: 2 },
{ name: 'Walter', rate: 2 },
{ name: 'Aurelio', rate: 2 },
{ name: 'Cesar', rate: 2 },
{ name: 'Jeff', rate: 2 },
{ name: 'Claudio', rate: 1 },
{ name: 'Daniel', rate: 1 },
{ name: 'Regis', rate: 1 },
{ name: 'Big', rate: 1 },
{ name: 'Lucas', rate: 1 },
{ name: 'Vagner', rate: 0 }
];
let pairs = [];
while(players.length > 0) {
let rand = Math.floor(Math.random() * players.length);
let player1 = players.splice(rand, 1).shift();
if(players.length > 0) {
rand = Math.floor(Math.random() * players.length);
let player2 = players.splice(rand, 1).shift();
while(!isFair(player1, player2) && players.length > 0) {
console.log("NOT FAIR: " + player1.name + " e " + player2.name);
players.push(player2);
rand = Math.floor(Math.random() * players.length);
player2 = players.splice(rand, 1).shift();
}
let pair = [player1, player2];
pairs.push(pair);
document.getElementByID('pairs').append(pair[0].name + " e " + pair[1].name);
} else {
console.log(player1.name + " sobrou!");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment