var teamsFirst = [
{ name: "Barcelona", country: "Spain" },
{ name: "Real Madrid", country: "Spain" },
{ name: "MU", country: "England" },
{ name: "Totenham", country: "England" }
];
var teamsSecond = [
{ name: "Atletico Madrid", country: "Spain" },
{ name: "Valencia", country: "Spain" },
{ name: "Chelsea", country: "England" },
{ name: "Arsenal", country: "England" }
];
var groupA = [];
var groupB = [];
var groupC = [];
var groupD = [];
var groups = [
groupA, groupB, groupC, groupD
];
function compareRandom() {
return Math.random() - 0.5;
}
function printTeams() {
for ( let i = 0; i < groups.length; i += 1 ) {
console.log('Group ' + i + ": " + groups[i][0].name + " and " + groups[i][1].name);
}
}
function checkTeams() {
var response = false;
for ( var i = 0; i < groups.length; i += 1 ) {
if ( groups[i][0].country === groups[i][1].country ) {
response = true;
}
}
return response;
}
function cleanGroups() {
groupA = [];
groupB = [];
groupC = [];
groupD = [];
}
for ( var j = 0; j < 100; j++ ) {
teamsFirst.sort(compareRandom);
teamsSecond.sort(compareRandom);
for ( let i = 0; i < groups.length; i += 1 ) {
groups[i].push(teamsFirst[i]);
groups[i].push(teamsSecond[i]);
}
var answer = checkTeams();
if (!answer) {
printTeams();
break;
} else {
cleanGroups();
}
}
Задача программы - сортировать команды в группы так, чтобы в одной группе не было команд с одной и той же страны. Проблема заключается в следующем: если последний for
заменить на while
, то программа будет выполняться бесконечно, и команды никогда не выведутся в консоль. Но, если for
оставить, то они иногда появляются. Как исправить программу так, чтобы происходила сортировка команд, потом проверка ( есть ли команды в одной группе одинаковыми странами ), и в конце - вывод?
Перебираем команды первой группы и для каждой ищем первую подходящую из второй. Подходящие из второй убираем совсем чтоб они не продублировались в другой паре.
let teamsFirst = [
{ name: "Barcelona", country: "Spain" },
{ name: "Real Madrid", country: "Spain" },
{ name: "MU", country: "England" },
{ name: "Totenham", country: "England" }
];
let teamsSecond = [
{ name: "Atletico Madrid", country: "Spain" },
{ name: "Valencia", country: "Spain" },
{ name: "Chelsea", country: "England" },
{ name: "Arsenal", country: "England" }
];
let groupA = [],
groupB = [],
groupC = [],
groupD = [];
let groups = [
groupA, groupB, groupC, groupD
];
function compareRandom(a, b)
{
return Math.random() - 0.5;
}
function printTeams()
{
for (let i = 0; i < groups.length; i++) {
console.log(`Group #${i}: ${groups[i][0].name} (${groups[i][0].country}) VS ${groups[i][1].name} (${groups[i][1].country})`);
}
}
teamsFirst.sort(compareRandom);
teamsSecond.sort(compareRandom);
for (let f = 0, first; f < teamsFirst.length; f++) {
first = teamsFirst[f];
groups[f].push(first);
for (let s = 0, second; s < teamsSecond.length; s++) {
second = teamsSecond.shift();
if (second.country !== first.country) {
groups[f].push(second);
break;
}
teamsSecond.push(second);
}
}
printTeams();
var teamsFirst = [
{ name: "Barcelona", country: "Spain" },
{ name: "Real Madrid", country: "Spain" },
{ name: "MU", country: "England" },
{ name: "Totenham", country: "England" }
];
var teamsSecond = [
{ name: "Atletico Madrid", country: "Spain" },
{ name: "Valencia", country: "Spain" },
{ name: "Chelsea", country: "England" },
{ name: "Arsenal", country: "England" }
];
var groupA = [];
var groupB = [];
var groupC = [];
var groupD = [];
var groups = [
groupA, groupB, groupC, groupD
];
function randomIntegr() {
var random = Math.random() * 4;
return Math.floor(random);
}
function randomGroups(teams) {
teams.forEach(team =>{
var random = randomIntegr();
if (!groups[random].length){
groups[random].push(team);
} else if (groups[random].some(item => {return item.country !== team.country}) && groups[random].length < 2){
groups[random].push(team);
} else {
for (group of groups){
if (!group.length){
group.push(team);
break;
} else if (group.some(item => {return item.country !== team.country}) && group.length < 2){
group.push(team);
break;
}
}
}
})
}
randomGroups(teamsFirst);
randomGroups(teamsSecond);
for (val of groups){
console.log(`${val[0].name} vs ${val[1].name}`);
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Дан массив объектовНайти введенное значение в массиве и выести порядковый номер элемента массива с ключом, в котором оно записано
Почему то у меня проверяет только один input вместо каждого с name=oneКто может подсказать как сделать проверку каждого input name="one" ?
Стоит задача изdocx документа импортировать текст в md
Есть две таблицы связанные по двум колонкам