Страницы

Поиск по вопросам

среда, 26 февраля 2020 г.

Придумать алгоритм для задачи: Найти шарики в коробке

#алгоритм


Имеется 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; }


Комментариев нет:

Отправить комментарий