2й Этап БДиМО, индвидуальный тур задача 1

Финиш 6.12.2020

Организационная информация о задачах трека Большие Данные и Машинное обучение будет сообщаться в телеграмм-канале https://t.me/nti_ml Задача 1: Вове нужно сделать ремонт на даче. Есть X мастеров, которые умеют делать разные работы. Есть список работ, который нужно сделать Вове. Каждый раз когда новые мастер приходит продолжать работу, он ругает предыдущего мастера и говорит, и много возмущается. Необходимо составить расписание работ мастеров так, чтобы количество возмущений (перемен с одного мастера на другого) было минимальным. У каждого мастера список того, что он умеет. В качестве ответа предоставляется минимальное число перемен мастеров и последовательность мастеров. Если таких последовательностей несколько, то подойдет любая из них в качестве правильного ответа.

Ответ представляется в виде списка имен мастеров, которые делают работу. Длина списка имен равна длине списка работ.

Имена мастеров = ["Антон","Егор","Саша","Леша","Женя","Витя","Коля","Кеша","Стас","Миша"]

Список работ = ["пилить", "рубить", "таскать","сверлить",  "носить", "вытачивать", "красить","лакировать","вешать шторы", "укладывать пол", "ставить окна","вешать люстру",   "строить крыльцо","закупать материалы"]

Количество мастеров от 6 до 10 ( у всех мастеров разные имена) Количество навыков мастера от 3 до 6 (навыки не повторяются) Количество работ от 5 до 15 (работы могут повторяться)

Если работы текущими мастерами выполнить невозможно, то надо вернуть пустой лист []

Формат запроса ( [(имя_работника,[список_работ],..)], [список_работ] ) формат ответа [имя_работника,…]

для ответа вам нужно загрузить файл submission.py в котором есть функция eval(data), при этом в переменную data передается запрос. пример:

submission.py:

def eval(data):
    return [data[0][0][0],data[0][1][0]]

Если ваш код падает, то возможно посмотреть ошибки. Для решения задачи, можно пользоваться только стандартными библиотеками.

будет в качестве ответа возвращать имена двух работников (ответ не правильный, но корректный с точки зрения исполнения кода).

Пример запроса: ([(‘Антон’, [‘строить крыльцо’, ‘ставить окна’, ‘рубить’]), (‘Егор‘, [‘таскать’, ‘вешать люстру’, ‘красить’, ‘строить крыльцо’]), (‘Саша’, [‘лакировать’, ‘вешать шторы’, ‘сверлить’]), (‘Леша’, [‘закупать материалы’, ‘рубить’, ‘пилить’, ‘таскать’, ‘ставить окна’]), (‘Женя’, [‘вешать шторы’, ‘сверлить’, ‘таскать’, ‘лакировать’]), (‘Витя’, [‘закупать материалы’, ‘строить крыльцо’, ‘сверлить’, ‘пилить’, ‘укладывать пол’, ‘лакировать’]), (‘Коля’, [‘носить’, ‘вытачивать’, ‘красить’, ‘таскать’, ‘ставить окна’])], [‘закупать материалы’, ‘пилить’, ‘пилить’, ‘сверлить’, ‘рубить’, ‘пилить’, ‘красить’, ‘носить’, ‘пилить’]) Ответ: [‘Витя’, ‘Витя’, ‘Витя’, ‘Витя’, ‘Леша’, ‘Леша’, ‘Коля’, ‘Коля’, ‘Леша’]

В качестве теста решение будет проверено на 30 запусках, если все запуски решены верно, то получаете 100 баллов, если есть 1 ошибка, то 50 баллов, если более одной ошибки, то 0 баллов. В рамках решения данной задачи количество пакетов ограниченно стандартными пакетами python3, pandas, scikit-learn, scipy.



Очки Участник Дата Команда Город Учебное заведение
100.0 Эталонное решение (не участвует в зачете) 16.11.2020 06:39 Эталонное решение (не участвует в зачете)