#алгоритм
Имеется 50 пронумерованных (от 1 до 50) бесцветных шариков. Имеется 5 бесцветных пустых коробок. Часть шариков в случайном порядке раскладываются по 5 коробкам. Например, 40 шариков положили в коробки. При этом ни одна коробка не может быть пустой (т.е. минимум один шарик в коробке). Соответственно, часть шариков остается вне коробок. Вы не знаете в какой именно коробке какой шарик лежит. Также не знаете какие шарики остались вне коробок. Все 50 шариков могут попасть в коробки и ни одного не остаться вне коробок. Вы можете менять шарикам цвет в любом порядке и любое количество раз. Если все шарики в одной из коробок станут одного цвета, то коробка станет такого-же цвета. Если хотя бы один шарик в коробке имеет отличный цвет (или не имеет цвета), то коробка снова станет бесцветной. Имея эту возможность идентификации по цвету нужно найти в какой коробке какие лежат шарики (например, в коробке 1 лежат шарики с номерами 10, 7, 23, 50; в коробке 2 лежит шарик с номером 3 и т.д.) и какие шарики не попали ни в одну коробку.
Ответы
Ответ 1
Нужно окрасить все шарики в какой-то один цвет - все коробки станут этого цвета. и по одному перекрашивать в другой цвет, где перекрасится коробка там и шарик... Вот сниппет, это не алгоритм а визуализация, если навести на коробку появится тултип - какие там шары ... let boxes = [[],[],[],[]]; let balls = Array(50).fill(0).map((e, i) => { let ball = {index:i}; Math.random()>0.6 && boxes[Math.floor(Math.random()*boxes.length)].push(ball); buttons.innerHTML += `${(i+1)%10?'':'
'}` return ball; }); boxes.forEach((b,i) => { boxesDiv.innerHTML += `${i+1}` }) function test(el){ // задаем цвет всех шаров - красный balls.forEach(b => b.color = '#faa'); // задаем цвет шара по индексу нажатой кнопки - синий balls[+el.id.substring(1)].color="#aaf"; // красим кнопки в соответствии цветам шаров balls.forEach((b, i) => document.querySelector(`#b${i}`).style.backgroundColor = b.color) // красим коробки в зависимости от того какие в них шары boxes.forEach((box, i) => document.querySelector(`#box${i}`).style.backgroundColor = box.filter(b => b.color !== '#faa').length ? 'white' : '#faa') } button{width:30px} #boxesDiv div{ display:inline-block; width:40px; border: solid; margin:10px; padding:5px; text-align:center; cursor:default; }
Комментариев нет:
Отправить комментарий