Как написать сложный алгоритм просто | Advent of Code 2023 Day 5
Паша Егоров из Контура утверждает, что сложный алгоритм не обязательно должен быть написан сложным образом. По его мнению, любой код должен быть простым и понятным, чтобы каждый разработчик, прочитавший ваш код, не испытывал трудностей :)
Разбираемся, как это делать на примере задачи 5-го дня с Advent of Code 2023.
Приходите в наше комьюнити решателей Advent of Code: t.me/+KJMKnawI71w5NjJi
И его чат: t.me/konturAoC2023_chat
Больше событий и полезной инфы:
- в телеграм-канале t.me/+zWBpy5_75BU3OGVi
- на сайте про технологии в Контуре tech.kontur.ru
Пікірлер: 10
Спасибо! Очень познавательное видео! Купил книжку автора Ivan Čukić про функциональное программирование в С++. Затем начал применять больше декларативного подхода. В целом, подход в написании кода стал похож с представленным в видео. Подтверждаю - код стало легче писать, а главное понимать. Распределять сложность по функциям и объектам здорово помогает сконцентрироваться на решении небольших, локальных задач.
Мы будем использовать для имен классов существительные - class Transform :D
@PavelEgorov-xoposhiy
7 ай бұрын
:-) Но Transform это ведь и существительное тоже!
@alekseilarkov3646
7 ай бұрын
@@PavelEgorov-xoposhiy конечно, мы ведь за гибкость любого языка
Я написал сложный код, но только потому, что для меня в приоритете была скорость решения задачи, а читаемость на последнем месте.
Звук тихий :-(
@vladslav0088
7 ай бұрын
Проблема на вашей стороне
А нельзя ли тут пойти "задом наперёд"? Ввести понятие обратного отображения и посмотреть, откуда пришёл первый элемент на нижнем слое с самого верхнего? Ведь нас только про первый элемент спрашивают
@PavelEgorov-xoposhiy
7 ай бұрын
Первый элемент ведь как раз и не известен. Придется проверять все числа с самого маленького, трансформировать его назад и смотреть попал ли он в один из исходных диапазонов? Но если предварительно справиться схлопнуть все трансформации в одну трансформацию, то проверять можно будет каждое число довольно быстро (бинпоиском, за логарифм отображений в этой одной трансформации) и это решение более менее может сработать.
Едва ли проще, чем было