Недавно (действительно удивительное совпадение!) в чате про JS спросили, а нужны ли вообще какие-то алгоритмы для разработки фронтенда. И вот, я как раз сейчас закончил хреновину, где ими пришлось обмазаться на фронтенде!
У нас на работе есть некий… дэшборд чтоли, который показывает графики с перф метриками за определённый промежуток времени.
Ну и вот, этот дэшборд показывает тултипы, когда наводишь мышку на точки графика. Но делает он это крайне хреново, я даже
на StackOverflow вопрос задал, как починить. Нужно, чтобы он находил ближайшую точку к курсору, а он находит ближайшую по какой-нибудь конкретной оси, а вторую ось игнорирует.
Ну и вот, короче, мне пришлось сперва запариться и изучить API библиотеки, которую мы используем для графиков, чтобы найти подходящие точки расширения (а это было непросто, она там очень динамичная — динамика поверх динамического языка, с отдельными перечислениями пропертей и событий на объектах).
А потом пришлось решать и настоящую проблему. Почему этой фичи не реализовано из коробки в библиотеке? А потому, что задача «найти ближайшую точку к курсору из множества на графике» — нетривиальная.
И мне пришлось вспоминать, как я сходную задачу решал в своей диссертации (!), и прикурочивать JS-либу для k-d tree (потому что такое дерево умеет быстро строиться и быстро находить точки, ближайшие к заданной).
Такие дела.