Unit-тестирование здорового человека ч.1
Спустя более года написал еще одну статью на хабре. Это первая часть из запланированных, где в первой статье будет основной упор на философии и необходимости.
1️⃣ Зачем нужны тесты?
2️⃣ Свойства хороших тестов
3️⃣ Антипаттерны
4️⃣ Почему хороший разработчик не только пишет код
5️⃣ Когда не нужны юнит-тесты
6️⃣ Почему хороший код не напишешь без тестов
Суммарно эти советы и техники я юзал почти во всех компаниях. Материала много и везде юнит-тесты были очень полезны, вопреки мнению, что клиентам они не нужны
Спустя более года написал еще одну статью на хабре. Это первая часть из запланированных, где в первой статье будет основной упор на философии и необходимости.
Суммарно эти советы и техники я юзал почти во всех компаниях. Материала много и везде юнит-тесты были очень полезны, вопреки мнению, что клиентам они не нужны
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
unit-тестирование здорового человека ч.1
Вступление Почему тесты не популярны в СНГ у клиентских разработчиков? В мобильной разработке программисты их часто обвиняют в усложнении и удорожании разработки. Примером хорошего продукта без тестов...
🔥13👍3
365 дней богу Алгоритмов
Этот год я стартую с новым челенджем. Каждый день я буду решать задачи с литкода и выкладывать их на канал.
Для меня уже не первый вызов себе. С 2018 по 2019 устраивал «365 дней Хемингуэю». Тогда у меня был литературный запой. Я прочитал за год около 100 книг и ежедневно писал небольшие рассказы, качая навык сторитейлинга.
Собственно, в честь этого челленджа назван и этот. Если бы не он, то я бы не ввёл этот канал с такой легкостью и почти не испытывая сложности с генерацией ежедневного контента, а только повышая нагрузки и увеличивая ставки
Такие челленджи дают уверенность, что побеждает не сильнейший. Побеждает самый стойкий. Проверю же свою
Этот год я стартую с новым челенджем. Каждый день я буду решать задачи с литкода и выкладывать их на канал.
Для меня уже не первый вызов себе. С 2018 по 2019 устраивал «365 дней Хемингуэю». Тогда у меня был литературный запой. Я прочитал за год около 100 книг и ежедневно писал небольшие рассказы, качая навык сторитейлинга.
Собственно, в честь этого челленджа назван и этот. Если бы не он, то я бы не ввёл этот канал с такой легкостью и почти не испытывая сложности с генерацией ежедневного контента, а только повышая нагрузки и увеличивая ставки
Такие челленджи дают уверенность, что побеждает не сильнейший. Побеждает самый стойкий. Проверю же свою
🔥24⚡5👍3
Forwarded from Мобильная разработка
This media is not supported in your browser
VIEW IN TELEGRAM
Copilot для Xcode — расширение для редактора
Это расширение Xcode Source Editor с помощью которого, можно настроить Github Copilot для Xcode. CopilotForXcode использует LSP, предоставляемого через Copilot.vim для генерации предложений и отображения их в виде комментариев.
Репозиторий: https://github.com/intitni/CopilotForXcode
#ios
Это расширение Xcode Source Editor с помощью которого, можно настроить Github Copilot для Xcode. CopilotForXcode использует LSP, предоставляемого через Copilot.vim для генерации предложений и отображения их в виде комментариев.
Репозиторий: https://github.com/intitni/CopilotForXcode
#ios
Как решать алгоритмы?
Точного ответа никто не может дать. Изучая советы по подготовке к изучению алгоритмов выявил для себя такую стратегию:
Не стоит сразу брать и решать литкод. Эту тактику я взял у создателя комьюнити фаанг-интервью, который попал вроде в гугл. Эти стратегии транслируют в книге “cracking the coding interview”.
Слепая практика ничем не отличается от чтения теории. Все должно быть сбалансированно. Нужно наметить цели и планы. Стратегии. Изучать чужие практики и смотреть на решения других
Этому меня научил и Стивен Кинг. Нет, он не решал алгоритмы. Он написал книгу «как писать книги». Ее я брал за основу к своему прошлому челенджц. Где для написания хороших книг нужно уметь много читать и уметь много писать.
Свой путь я начну с разминки. Опыт бега на дальние дистанции научил меня не бежать старт с высоким темпом. Это чаще приводит к истощению уже на середине.
Пишу это, чтоб никого не разочаровать. Я не буду решать ежедневный контест или тупо готовиться будто к собесам. Пока еще рано.
Для меня важно получить навыки, а не пройти интенсив молодого бойца к собесу
Точного ответа никто не может дать. Изучая советы по подготовке к изучению алгоритмов выявил для себя такую стратегию:
Не стоит сразу брать и решать литкод. Эту тактику я взял у создателя комьюнити фаанг-интервью, который попал вроде в гугл. Эти стратегии транслируют в книге “cracking the coding interview”.
Слепая практика ничем не отличается от чтения теории. Все должно быть сбалансированно. Нужно наметить цели и планы. Стратегии. Изучать чужие практики и смотреть на решения других
Этому меня научил и Стивен Кинг. Нет, он не решал алгоритмы. Он написал книгу «как писать книги». Ее я брал за основу к своему прошлому челенджц. Где для написания хороших книг нужно уметь много читать и уметь много писать.
Свой путь я начну с разминки. Опыт бега на дальние дистанции научил меня не бежать старт с высоким темпом. Это чаще приводит к истощению уже на середине.
Пишу это, чтоб никого не разочаровать. Я не буду решать ежедневный контест или тупо готовиться будто к собесам. Пока еще рано.
Для меня важно получить навыки, а не пройти интенсив молодого бойца к собесу
👍1
Бинарный поиск
Решил начать с основ. Почти все книги про алгоритмы начинаются с этого. Почему? Да потому что этот алгоритм лежит в основе системной функций сортировки, почти во всех языках.
В чем его идея?
Мы делим пополам заранее отсортированный массив, чтобы обнаружить нужный элемент. Вот и всё.
Алгоритм такой:
1. Сортируем массив данных
2. Делим его пополам и находим середину.
3. Сравниваем средний элемент с заданным искомым элементом.
4. Если искомое число больше среднего — продолжаем поиск в правой части массива (если он отсортирован по возрастанию): делим ее пополам, повторяя пункт 3. Если же заданное число меньше — алгоритм продолжит поиск в левой части массива, снова возвращаясь к пункту 3.
Задача в литкоде
сложность: logn (без сортировки)
#365_дней_богу_Алгоритмов #1
Решил начать с основ. Почти все книги про алгоритмы начинаются с этого. Почему? Да потому что этот алгоритм лежит в основе системной функций сортировки, почти во всех языках.
В чем его идея?
Мы делим пополам заранее отсортированный массив, чтобы обнаружить нужный элемент. Вот и всё.
Алгоритм такой:
1. Сортируем массив данных
2. Делим его пополам и находим середину.
3. Сравниваем средний элемент с заданным искомым элементом.
4. Если искомое число больше среднего — продолжаем поиск в правой части массива (если он отсортирован по возрастанию): делим ее пополам, повторяя пункт 3. Если же заданное число меньше — алгоритм продолжит поиск в левой части массива, снова возвращаясь к пункту 3.
Задача в литкоде
сложность: logn (без сортировки)
#365_дней_богу_Алгоритмов #1
👍18
Swift Learning Roadmap 2023
Снова роадмапы. Но тут очень лаконично и хорошо. Очень нравится, что емко раставлены акценты на базовых вещах:
- Знание языка
- IDE
- GIT
- UI
Когда я был джуном, то часто изучал всякие бесполезные вещи, которые нужны только похвастаться на собесах. А игнорировал most common штуки, которые куда чаще встречаются на боевых проектах.
Сейчас у многих ничего не изменилось. Из-за инфо-мусора люди лучше изучат глубокие детали с управлением памятью или многопоточки, думая это им пригодится чаще, чем знания гита или динамической высоты в ячейках
Снова роадмапы. Но тут очень лаконично и хорошо. Очень нравится, что емко раставлены акценты на базовых вещах:
- Знание языка
- IDE
- GIT
- UI
Когда я был джуном, то часто изучал всякие бесполезные вещи, которые нужны только похвастаться на собесах. А игнорировал most common штуки, которые куда чаще встречаются на боевых проектах.
Сейчас у многих ничего не изменилось. Из-за инфо-мусора люди лучше изучат глубокие детали с управлением памятью или многопоточки, думая это им пригодится чаще, чем знания гита или динамической высоты в ячейках
👍14
Проход отсортированного бинарного дерева
Тут я взялся за дейли контест.
Алгоритм такой:
1. Ищем родительскую ноду
2. Идем по левой
3. Доходим до конца
4. Идем вправо
- Литкод задача
- Хорошее объяснение бинарных деревьев
#365_дней_богу_алгоритмов #2
Тут я взялся за дейли контест.
Алгоритм такой:
1. Ищем родительскую ноду
2. Идем по левой
3. Доходим до конца
4. Идем вправо
- Литкод задача
- Хорошее объяснение бинарных деревьев
#365_дней_богу_алгоритмов #2
Мода на решение задач в литкоде становится все популярнее.
Думаю, через какое-то время условные 200-300 задач будут в снг обязательным показателем для мидла. Ведь все реже удивишь кого-то таким количеством решенных задач.
В статье автор высказывает мнение о пользе.
Я же считаю, что ежедневное нарешевание задач равно улучшению общих физических показателей.
Как в спорте. Спортсмены 70-80% бегают, прыгают, развивают тело. Увеличивая базовые показатели скорости, силы и выносливости. А потом остальные 20-30% тренируют в зале технику: играют в игры, борятся, спарингуют.
Условно алгоритмическая секция — это что-то вроде оценки твоих базовых показателей.
https://habr.com/ru/post/709550/
Думаю, через какое-то время условные 200-300 задач будут в снг обязательным показателем для мидла. Ведь все реже удивишь кого-то таким количеством решенных задач.
В статье автор высказывает мнение о пользе.
Я же считаю, что ежедневное нарешевание задач равно улучшению общих физических показателей.
Как в спорте. Спортсмены 70-80% бегают, прыгают, развивают тело. Увеличивая базовые показатели скорости, силы и выносливости. А потом остальные 20-30% тренируют в зале технику: играют в игры, борятся, спарингуют.
Условно алгоритмическая секция — это что-то вроде оценки твоих базовых показателей.
https://habr.com/ru/post/709550/
Хабр
Есть ли польза от решения алгоритмических задач на LeetCode?
Пожалуй каждый программист, который сталкивался с вопросом: "А как устроиться на работу в FAANG?" - получал ответ, что ему нужно разобраться с алгоритмами, со структурами...
👍5
Сравнение дерева
Снова дейлик литкода. Изначально я взял вчерашний код и просто добавил двойной обход🤬 А потом сравнил результаты двух проходов.
Но мы понимаем, что пусть алгоритмы требуют только выполненной задачи, ужасать таким неоптимальным решением никого не хочется.
Подумав можно заюзать рекурсию, где код лаконичней и правильнее
Задача на литкоде
#365_дней_богу_алгоритмов #3
Снова дейлик литкода. Изначально я взял вчерашний код и просто добавил двойной обход
Но мы понимаем, что пусть алгоритмы требуют только выполненной задачи, ужасать таким неоптимальным решением никого не хочется.
Подумав можно заюзать рекурсию, где код лаконичней и правильнее
Задача на литкоде
#365_дней_богу_алгоритмов #3
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2👍2⚡1
Паттерн: Фабричный метод
⏺ lvl: jun
В хорошо запроектированных программах все должно относиться к уровню абстракций, а не реализаций.
Что это значит? Допустим, мы создали фабрику по созданию машин, но привязаны к конкретному типу определенной марки. Когда нам придется добавлять новые машины, то привязанность к конкретным маркам (классам) будет проблемной
Тут мы скрываем инициализацию нашей марки за абстракцию (протокол) и определяем метод, который будет создавать нужный класс.
В итоге, реализации могут быть сложными, а инкапсуляция может упростить создание конкретных экземпляров за счет определения одного места.
В книге банды четерых этот паттерн описывается так:
⏺ Определяет интерфейс для создания объекта, но оставляет подклассам реше ние о том, какой класс инстанцировать. Фабричный метод позволяет классу де легировать инстанцирование подклассам.
Создание фабричного метода упростит расширение и поддержку новых типов.
В хорошо запроектированных программах все должно относиться к уровню абстракций, а не реализаций.
Что это значит? Допустим, мы создали фабрику по созданию машин, но привязаны к конкретному типу определенной марки. Когда нам придется добавлять новые машины, то привязанность к конкретным маркам (классам) будет проблемной
Тут мы скрываем инициализацию нашей марки за абстракцию (протокол) и определяем метод, который будет создавать нужный класс.
В итоге, реализации могут быть сложными, а инкапсуляция может упростить создание конкретных экземпляров за счет определения одного места.
В книге банды четерых этот паттерн описывается так:
Создание фабричного метода упростит расширение и поддержку новых типов.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9
Неупорядоченный обход бинарного дерева
Задание дейлика было не изи, а медиум. Даже пробовать не стал.😬 Поэтому возвращаемся к повторению основ.
В позапрошлом задании проходил отсортированное дерево. Теперь идем по неупорядоченному.
Здесь заюзал алгоритм обхода Морриса
Задача в литкоде
#365_дней_богу_алгоритмов #4
Задание дейлика было не изи, а медиум. Даже пробовать не стал.
В позапрошлом задании проходил отсортированное дерево. Теперь идем по неупорядоченному.
Здесь заюзал алгоритм обхода Морриса
Задача в литкоде
#365_дней_богу_алгоритмов #4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Продолжаем страшилки для джунов
Чел сделал тестовое с помощью chatGPT
❔ Какие же навыки обесценятся, а какие наберут актуальность?
Обесценится любой бойлерплейт код. Условно кнопку верстать сможет будет и человек без знания программирования.
Наберут в цене же знания проектирования. Куда положить кнопку, чтоб она ничего не сломала и была полезна бизнесу — это знает только погруженные в бизнес-процессы и предметную область разрабы.
Как заметили в нашем чате:
- тестовые задания будут отменяться чаще (спустя пару недель вышел пост на хабре)
- разрабы будут больше бизнес-аналитиками и манагерами
- усилится акцент на дизайн системе. Но это пока нейросеть наши фотки генерит и не научилась в миро блок-схемы
- завуалированные алгоритмические задачи нейросеть еще не научилась решать
- по-настоящему глубокие штуки она не умеет
Бот стал супер хайповой штукой. Скоро будут чат боты в телеграме, подключенные к апи чатГПТ, которые будут делать по скриптам простенькие апки
Чел сделал тестовое с помощью chatGPT
Обесценится любой бойлерплейт код. Условно кнопку верстать сможет будет и человек без знания программирования.
Наберут в цене же знания проектирования. Куда положить кнопку, чтоб она ничего не сломала и была полезна бизнесу — это знает только погруженные в бизнес-процессы и предметную область разрабы.
Как заметили в нашем чате:
- тестовые задания будут отменяться чаще (спустя пару недель вышел пост на хабре)
- разрабы будут больше бизнес-аналитиками и манагерами
- усилится акцент на дизайн системе. Но это пока нейросеть наши фотки генерит и не научилась в миро блок-схемы
- завуалированные алгоритмические задачи нейросеть еще не научилась решать
- по-настоящему глубокие штуки она не умеет
Бот стал супер хайповой штукой. Скоро будут чат боты в телеграме, подключенные к апи чатГПТ, которые будут делать по скриптам простенькие апки
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Как ChatGPT за меня тестовое задание для собеседования писал
Я сейчас активно ищу работу, прохожу собеседования и иногда работодатели присылают тестовые задания, прежде чем пригласить на интервью. В очередной раз мне прислали простенькое тестовое задание, в...
🗿5👌1
Обратный обход бинарного дерева
Последний из основных способов обхода дерева. Решил через очередь.
Наудивлении у отуса отличная статья про деревья без лишней херни. Максимальная лаконичная выдержка.
Задача на литкоде
Сейчас пока решаю задачи на уровне интуиции, а мб потом начну подключать попытки осилить математические доказательства
Не знаю стоит ли делать отдельные посты про полезные ссылки и объяснять деревья без задач. Ибо это пост ради поста, а без практики это все из головы ветром сдует.
Ставь 💅 если делать отдельные посты про техники. Или 🗿 если публиковать только ссылки с задачами. А там сами уже разберутся
#365_дней_богу_алгоритмов #5
Последний из основных способов обхода дерева. Решил через очередь.
Наудивлении у отуса отличная статья про деревья без лишней херни. Максимальная лаконичная выдержка.
Задача на литкоде
Сейчас пока решаю задачи на уровне интуиции, а мб потом начну подключать попытки осилить математические доказательства
Не знаю стоит ли делать отдельные посты про полезные ссылки и объяснять деревья без задач. Ибо это пост ради поста, а без практики это все из головы ветром сдует.
Ставь 💅 если делать отдельные посты про техники. Или 🗿 если публиковать только ссылки с задачами. А там сами уже разберутся
#365_дней_богу_алгоритмов #5
💅18🗿5
😁11
Корень числа с бинарным поиском
Еще один наглядный пример использовать бинарный поиск не только в отсортированном массиве, но и обычная числах. Что по сути можно тоже сказать, что
Наглядный пример поиска корня. Изи решается через тот же бинарный поиск
Задача в литкоде
#365_дней_богу_алгоритмов #6
Еще один наглядный пример использовать бинарный поиск не только в отсортированном массиве, но и обычная числах. Что по сути можно тоже сказать, что
Наглядный пример поиска корня. Изи решается через тот же бинарный поиск
Задача в литкоде
#365_дней_богу_алгоритмов #6
Atomicity (атомарность)
Этот термин часто юзается вместе с многопоточкой.
Вики говорит:
❕ Это операция, которая либо выполняется целиком, либо не выполняется вовсе; операция, которая не может быть частично выполнена и частично не выполнена.
Грубо говоря, атомарная операция не дает другим потокам прочитать участок памяти, пока он изменяется
Пример из исходников аламофайр
Этот термин часто юзается вместе с многопоточкой.
Вики говорит:
Грубо говоря, атомарная операция не дает другим потокам прочитать участок памяти, пока он изменяется
Пример из исходников аламофайр
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Еще один гайд по алгоритмам.
В отличие от других этот говорит о необходимости базовых алгоритмов и техник:
- Два поинтера с массивами, связанным списком
- Бэктрекинг
- Обходы деревьев
- Кучи и Стэки
- Динамическое программирование
Вообще, считаю очень важно определить для себя приоритеты. В одном из предыдущих постов был спор "А нужно ли задумываться о стайлгайде, когда решаешь алгоритмы?".
Я считаю, что для решения литкода и других алгоритмических задач не стоит задумываться об излишних синтаксических улучшениях.
😔 Стоит опустить многие вещи и сфокусироваться на главном — решении задачи. А остальные вещи по оптимизации и косметической декорации уже после.
Всегда важнее решенная проблема, а ее форма уже на втором или третьем плане.
В отличие от других этот говорит о необходимости базовых алгоритмов и техник:
- Два поинтера с массивами, связанным списком
- Бэктрекинг
- Обходы деревьев
- Кучи и Стэки
- Динамическое программирование
Вообще, считаю очень важно определить для себя приоритеты. В одном из предыдущих постов был спор "А нужно ли задумываться о стайлгайде, когда решаешь алгоритмы?".
Я считаю, что для решения литкода и других алгоритмических задач не стоит задумываться об излишних синтаксических улучшениях.
Всегда важнее решенная проблема, а ее форма уже на втором или третьем плане.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Онанизм на код ревью
В ит любят поднимать тему карго-культов, но забывают упомянуть главный обитель. Наши пулл-реквесты.
Разворачивая тему приоритетов с прошлого поста хочется поделиться наблюдениями, когда проблема бездумного следования стайлгайду становятся системной.
Одно дело, когда это литкод. Куда страшнее, если погоня за косметикой и соответствие стайлгайду становится первостепенной в продакшене больших компаний. Спойлер. Стайлгайд необходим, но споры о соответствии должны быть в умеренных дозах.
Хороший код — это не косметика, читабельность, соответствие линтер правилам.
Хороший код — быстрый, стабильный и поддерживаемый. В последнюю очередь это про правила линтера
У нас есть заблуждение, подкормленное отделами техпиара, что в больших компаниях делают все правильно.
Не редкость, когда именно там, где нет никого кто может возразить, делается дичь. Культура компетенций нарушена. Ориентиры сбиты.
Люди тратят время на споры о важности чтения, жертвуя стабильностью, быстротой и гибкостью программы. Сроками и деньгами. Говоря о той далекой выгоде в будущем, о которой пишут в книгах. Сомнительная метрика.
Код ревью становится бюрократией стайлгайда, которая только вредит, а не дает пользу.
Никому не будет плохо от лишнего пробела, неочевидного нэйминга, переноса аргумента, неприватных методов.
Совершенный код — миф. На моей практике я видел только пару программистов, кто был доволен чужим кодом. Сотни нет. Единственный вариант его написать — это рефакторинг или TDD. Хорошие процессы и бизнес идеи приводят к хорошему коду на проде.
Ведь если твоя задача нужна коллегам для закрытия показателей или бизнес импакта, то я считаю эгоистичным сидеть и дрочить читабельность.
Нет, я не говорю выкинуть стайлгайд. Он нужен как общий ориентир. Но если выбирать между сложной и срочной задачей и спорами на ревью, то последний пункт можно принести в жертву.
Задача программиста решать задачу. А потом учиться решать ее красиво
В ит любят поднимать тему карго-культов, но забывают упомянуть главный обитель. Наши пулл-реквесты.
Разворачивая тему приоритетов с прошлого поста хочется поделиться наблюдениями, когда проблема бездумного следования стайлгайду становятся системной.
Одно дело, когда это литкод. Куда страшнее, если погоня за косметикой и соответствие стайлгайду становится первостепенной в продакшене больших компаний. Спойлер. Стайлгайд необходим, но споры о соответствии должны быть в умеренных дозах.
Хороший код — это не косметика, читабельность, соответствие линтер правилам.
Хороший код — быстрый, стабильный и поддерживаемый. В последнюю очередь это про правила линтера
У нас есть заблуждение, подкормленное отделами техпиара, что в больших компаниях делают все правильно.
Не редкость, когда именно там, где нет никого кто может возразить, делается дичь. Культура компетенций нарушена. Ориентиры сбиты.
Люди тратят время на споры о важности чтения, жертвуя стабильностью, быстротой и гибкостью программы. Сроками и деньгами. Говоря о той далекой выгоде в будущем, о которой пишут в книгах. Сомнительная метрика.
Код ревью становится бюрократией стайлгайда, которая только вредит, а не дает пользу.
Никому не будет плохо от лишнего пробела, неочевидного нэйминга, переноса аргумента, неприватных методов.
Совершенный код — миф. На моей практике я видел только пару программистов, кто был доволен чужим кодом. Сотни нет. Единственный вариант его написать — это рефакторинг или TDD. Хорошие процессы и бизнес идеи приводят к хорошему коду на проде.
Ведь если твоя задача нужна коллегам для закрытия показателей или бизнес импакта, то я считаю эгоистичным сидеть и дрочить читабельность.
Нет, я не говорю выкинуть стайлгайд. Он нужен как общий ориентир. Но если выбирать между сложной и срочной задачей и спорами на ревью, то последний пункт можно принести в жертву.
Задача программиста решать задачу. А потом учиться решать ее красиво
👍10😐6💯2💅2
Если вы вчера заметили, то не было ежедневных алгоритмов
Хейтеры скажут слился. Но я просто решил, что ежедневные отчеты задают не тот тон каналу.
Поэтому следующие посты я буду публиковать по воскресеньям и сразу с задачами за неделю. Для экономии времени своего и вашего.
Прошлые задачи:
#7. Найти сводной индекс. Решение далеко не оптимальное. На оптимизацию не было времени. Решил тупо в лоб
#8. Обход n-арного дерева в обратном порядке
Здесь посидел. Решил тоже неоптимизировать и тупо двойным проходом
#365_дней_богу_алгоритмов
#7 | #8
Хейтеры скажут слился. Но я просто решил, что ежедневные отчеты задают не тот тон каналу.
Поэтому следующие посты я буду публиковать по воскресеньям и сразу с задачами за неделю. Для экономии времени своего и вашего.
Прошлые задачи:
#7. Найти сводной индекс. Решение далеко не оптимальное. На оптимизацию не было времени. Решил тупо в лоб
#8. Обход n-арного дерева в обратном порядке
Здесь посидел. Решил тоже неоптимизировать и тупо двойным проходом
#365_дней_богу_алгоритмов
#7 | #8
👌1