Классификация состояния теплицы по датчикам
Условие
В файле data.csv находятся исторические показания датчиков теплицы и состояние растений, определённое агрономом. Каждая строка содержит температуру воздуха, влажность и концентрацию углекислого газа.
Требуется определить состояние для новых показаний методом k ближайших соседей при k = 3. Для строки с показаниями (t, h, c) и исторической строки (ti, hi, ci) используется квадрат евклидова расстояния: d = (t - ti)^2 + (h - hi)^2 + (c - ci)^2.
Строки файла, в которых хотя бы одно из трёх показаний отсутствует, не участвуют в поиске соседей. Исторические строки упорядочиваются по возрастанию расстояния, а при равных расстояниях раньше располагается строка с меньшим record_id. Берутся первые три строки этого порядка, и выводится метка, встречающаяся среди них чаще всего.
Если наибольшее число голосов набрали несколько меток, выводится лексикографически меньшая метка. Округление не применяется: требуется вывести метку точно в виде строки.
Формат ввода
В каталоге с программой находится файл data.csv в кодировке UTF-8. Разделитель полей — запятая, первая строка содержит заголовки. Колонки файла: record_id, observed_at, temperature_c, humidity_pct, co2_ppm, state.
В стандартный ввод подаются три целых числа t h c через пробел: температура в градусах Цельсия, влажность в процентах и концентрация углекислого газа в ppm для нового измерения.
Формат вывода
Выведите одну строку — предсказанную метку состояния: dry, normal или overheat.
Ограничения
В файле от 300 до 2000 строк данных, не считая заголовка. record_id — целое число от 1 до 2000 и не повторяется. Длина observed_at от 16 до 25 символов. Непустое значение temperature_c — вещественное число от 5.00 до 45.00, humidity_pct — вещественное число от 10.00 до 100.00, co2_ppm — целое число от 300 до 2000. В колонках temperature_c, humidity_pct и co2_ppm могут быть пустые значения. Длина метки state от 3 до 8 символов, значение принадлежит множеству dry, normal, overheat.
Во входе t — целое число от 5 до 45, h — целое число от 10 до 100, c — целое число от 300 до 2000. В файле гарантированно есть не менее трёх строк без пропусков среди трёх числовых показаний.
Решить задачу с автопроверкой на Python →
Куда дальше
- Школьный этап ВсОШ по информатике — как устроен первый этап и план подготовки за четыре недели
- БВИ и льготы при поступлении — какой диплом что даёт и сколько лет он действует
- Перечневые олимпиады по информатике — олимпиады перечня Минобрнауки, их уровни и что нужно к диплому