Первый HashCode состоялся во Франции в 2014 году и собрал всего 200 участников. За четыре года мероприятие стало очень популярным, и в 2017 году в нем участвовало уже более 26 тысяч программистов из Европы, Среднего Востока и Африки. В этом году в отборочном туре участвовали почти пять тысяч команд, в каждой команде может быть от двух до четырех человек.
На соревновании командам предлагается решить одну оптимизационную задачу по типу тех, с которыми регулярно сталкиваются специалисты компании Google в реальной работе. Например, в первый год конкурса участники должны были составить наиболее оптимальный маршрут для автомобиля с камерой, который используется для создания Google Maps. Нужно было найти такой маршрут, чтобы автомобиль смог покрыть максимально большую площадь города за ограниченное время.
В прошлом же году на отборочном этапе конкурса нужно было разработать алгоритм для наиболее оптимального размещения видео на YouTube, в том числе стримового, а в финале — распределить wi-fi-роутеры и кабели так, чтобы сигнал покрывал заданную площадь, при этом решение стоило бы как можно дешевле.
«На отборочных-2018 задача формулировалась довольно просто: есть несколько автомобилей такси и несколько заказов для них: довезти человека из пункта А в пункт Б в такое-то время. Нужно было максимизировать суммарное расстояние для выполненных заказов. Конечно, эта задача сильно упрощена по сравнению с теми, что встречаются в реальных проектах. В результате получилось, что многие команды получили очень близкие результаты. Так, у первых 50 команд суммарные очки отличаются на один процент, а у первых двух команд — на 0.03%, но результаты вполне объективные», — рассказал участник команды из преподавателей Университета ИТМО Павел Маврин, тьютор кафедры компьютерных технологий.
Кроме него в команду также вошли доцент кафедры Андрей Станкевич, программисты, выпускники МГУ им. М.В. Ломоносова и Санкт-Петербургского государственного университета Егор Куликов и Павел Кунявский.
У задач Google HashCode нет однозначного ответа, в отличие, например, от задач Чемпионата мира по программированию. Результаты необходимо загрузить в специальную систему, в которой ведется автоматический подсчет баллов, поэтому для команд главное предоставить как можно более точное и верное решение. За качеством проведения соревнований следит жюри, состоящее из инженеров Google. В ходе отборочного этапа участники могут работать из любой точки планеты со своих компьютеров. Также можно использовать любой язык программирования. Решение поставленной проблемы необходимо разработать за четыре часа.
«С одной стороны, задача на отборочных, безусловно, была упрощена, ведь на ее решение было лишь около четырех часов. С другой стороны, теория расписаний и оптимальное распределение ресурсов в подобных задачах — это действительно актуальная тема сейчас, когда агрегаторов такси становится все больше, а также серьезные исследования проводятся в области беспилотных автомобилей, ведь автоматизация обработки заявок — важный компонент такой системы», — прокомментировал Андрей Станкевич.
Он добавил, что участие в конкурсе, помимо просто спортивного интереса, позволяет узнать, какие IT-разработки крупные компании считают актуальными. Участники HashCode могут попробовать свои силы в областях на примере искусственной задачи, которая не требует больших усилий, но при этом позволяет понять, насколько это в целом может быть им интересно, сказал Андрей Станкевич. Для студентов, в том числе, это может стать фактором принятия решения о будущем месте работы.
«К таким задачам у нас никто никогда не готовился, просто есть какие-то общие навыки, позволяющие решать подобные задания. К тому же, мы регулярно участвуем в различных соревнованиях, практикуемся, чтобы держать себя в форме. Поэтому это соревнование мы воспринимаем не особо серьезно, скорее как интересное времяпровождение, возможность порешать задачки, пообщаться со знакомыми. И конечно, приятно будет съездить в Дублин», — прокомментировал участник команды студентов, студент кафедры компьютерных технологий Илья Збань.
Кроме него в команду вошли студенты Университета ИТМО Иван Белоногов, Михаил Путилин, Адам Бардашевич.