Есть такая браузерная игра, где нужно написать алгоритм управления лифтами. Звучит скучно, пока не попробуешь.
Суть простая: на экране здание с лифтами и людьми, которые хотят попасть на разные этажи. Ваша задача — написать на JavaScript логику, которая будет решать, куда ехать каждому лифту. Чем эффективнее алгоритм, тем больше людей успеете перевезти за отведённое время и тем сложнее уровни откроются.
Первые уровни проходятся на интуиции: «если лифт свободен — езжай на вызов». Но уже к пятому-шестому уровню начинаются проблемы: лифтов несколько, люди едут в разные стороны, время ограничено. Приходится думать про очереди, приоритеты, направление движения. По сути, это задача на алгоритмы планирования, только в игровой форме.
Код пишется прямо в браузере, есть документация с описанием всех методов:
elevator.goToFloor(), elevator.currentFloor(), elevator.getPressedFloors() и так далее. Можно ускорять и замедлять симуляцию, чтобы понять, где алгоритм тупит.На Reddit периодически всплывают треды, где люди делятся своими решениями и оптимизациями. Некоторые доходят до того, что пишут полноценные системы с предсказанием загрузки и распределением лифтов по зонам здания.
Игра бесплатная, работает в любом браузере, регистрация не нужна.
Играть: https://play.elevatorsaga.com
@devs_books
