Spec-Zone.ru › Kotlin 2

Задачи Advent of Code в идиоматическом Kotlin

Advent of Code — это ежегодное событие, которое проходит в декабре: каждый день с 1 по 25 декабря публикуется новая тематическая праздничная задача. С разрешения Эрика Уэстла, создателя Advent of Code, мы покажем, как решать эти задачи в идиоматическом стиле Kotlin:

  • Advent of Code 2025

  • Advent of Code 2024

  • Advent of Code 2023

  • Advent of Code 2022

  • Advent of Code 2021

  • Advent of Code 2020

Подготовьтесь к Advent of Code

Мы расскажем об основных советах, которые помогут вам приступить к решению задач Advent of Code на Kotlin:

  • Используйте этот шаблон GitHub для создания проектов

  • Посмотрите приветственное видео от представителя сообщества разработчиков Kotlin Себастьяна Айгнера:

Advent of Code 2022

День 1: Подсчёт калорий

Узнайте о шаблоне Kotlin для Advent of Code и удобных функциях для работы со строками и коллекциями в Kotlin, таких как maxOf() и sumOf(). Посмотрите, как функции-расширения помогают удобно структурировать решение.

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение в видео:

YouTube Advent of Code 2022, день 1 | Kotlin

День 2: Камень, ножницы, бумага

Разберитесь с операциями над типом Char в Kotlin и посмотрите, как тип Pair и конструктор to удобно использовать с сопоставлением с образцом. Узнайте, как упорядочивать собственные объекты с помощью функции compareTo().

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение в видео:

YouTube Advent of Code 2022, день 2 | Kotlin

День 3: Перестановка рюкзаков

Узнайте, как библиотека kotlinx.benchmark помогает понять характеристики производительности вашего кода. Посмотрите, как операции над множествами, например intersect, помогают находить общие данные, и сравните производительность разных реализаций одного решения.

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение в видео:

YouTube Advent of Code 2022, день 3 | Kotlin

День 4: Уборка лагеря

Узнайте, как функции infix и operator помогают сделать код выразительнее, а функции-расширения для типов String и IntRange — легко разбирать входные данные.

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение в видео:

YouTube Advent of Code 2022, день 4 | Kotlin

День 5: Штабеля ящиков

Узнайте, как создавать более сложные объекты с помощью фабричных функций, использовать регулярные выражения и работать с двусторонней очередью типа ArrayDeque.

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение в видео:

YouTube Advent of Code 2022, день 5 | Kotlin

День 6: Проблемы с настройкой

Узнайте больше о подробном анализе производительности с библиотекой kotlinx.benchmark и сравните характеристики 16 разных вариантов одного решения.

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение в видео:

YouTube Advent of Code 2022, день 6 | Kotlin

День 7: На устройстве не осталось места

Узнайте, как моделировать древовидные структуры, и посмотрите демонстрацию программной генерации кода Kotlin.

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение в видео:

YouTube Advent of Code 2022, день 7 | Kotlin

День 8: Домик на вершине дерева

Посмотрите на sequence в действии и узнайте, насколько первый черновой вариант программы может отличаться от идиоматического решения на Kotlin (специальный гость — Роман Елизаров!).

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение в видео:

YouTube Advent of Code 2022, день 8 | Kotlin

День 9: Мост из верёвок

Познакомьтесь с функцией run, именованными возвратами и удобными функциями стандартной библиотеки, такими как coerceIn или zipWithNext. Узнайте, как создавать списки заданного размера с помощью конструкторов List и MutableList, а также взгляните на визуализацию условия задачи, созданную на Kotlin.

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение в видео:

YouTube Advent of Code 2022, день 9 | Kotlin

День 10: Электронно-лучевая трубка

Узнайте, как диапазоны и оператор in упрощают проверку диапазонов, как параметры функций можно превратить в получателей, а также познакомьтесь с модификатором tailrec.

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение в видео:

YouTube Advent of Code 2022, день 10 | Kotlin

День 11: Обезьяна посередине

Узнайте, как перейти от изменяемого императивного кода к более функциональному подходу с неизменяемыми структурами данных и структурами только для чтения. Познакомьтесь с контекстными получателями и узнайте, как наш гость создал собственную библиотеку визуализации специально для Advent of Code.

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение в видео:

YouTube Advent of Code 2022, день 11 | Kotlin

День 12: Алгоритм подъёма на холм

Используйте очереди, ArrayDeque, ссылки на функции и модификатор tailrec, чтобы решать задачи поиска пути на Kotlin.

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение в видео:

YouTube Advent of Code 2022, день 12 | Kotlin

Advent of Code 2021

Прочитайте публикацию в блоге об Advent of Code 2021

День 1: Сканирование сонаром

Используйте функции оконной обработки и подсчёта, чтобы работать с парами и тройками целых чисел.

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение Антона Архипова в блоге Kotlin или видео:

YouTube Advent of Code 2021 на Kotlin, день 1: Сканирование сонаром

День 2: Погружение!

Узнайте о деструктурирующих объявлениях и выражении when.

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение Паши Финкельштейна на GitHub или видео:

YouTube Advent of Code 2021 на Kotlin, день 2: Погружение!

День 3: Бинарная диагностика

Изучите разные способы работы с двоичными числами.

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение Себастьяна Айгнера в блоге Kotlin или видео:

YouTube Advent of Code 2021 на Kotlin, день 3: Бинарная диагностика

День 4: Гигантский кальмар

Узнайте, как разобрать входные данные и добавить классы предметной области для более удобной обработки.

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение Антона Архипова на GitHub или видео:

YouTube Advent of Code 2021 на Kotlin, день 4: Гигантский кальмар

Advent of Code 2020

Все решения задач Advent of Code 2020 вы найдёте в нашем репозитории GitHub.

День 1: Исправление отчёта

Изучите обработку входных данных, перебор списка, разные способы создания map и использование функции let для упрощения кода.

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение Светланы Исаковой в блоге Kotlin или видео:

YouTube Изучаем Kotlin с командой Kotlin: Advent of Code 2020, № 1

День 2: Философия паролей

Изучите вспомогательные функции для работы со строками, регулярные выражения, операции над коллекциями и то, как функция let помогает преобразовывать выражения.

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение Светланы Исаковой в блоге Kotlin или видео:

YouTube Изучаем Kotlin с командой Kotlin: Advent of Code 2020, № 2

День 3: Траектория тобоггана

Сравните императивный и более функциональный стили кода, поработайте с парами и функцией reduce(), отредактируйте код в режиме выбора столбцов и исправьте переполнение целых чисел.

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение Михаила Дворкина на GitHub или видео:

YouTube Изучаем Kotlin с командой Kotlin: Advent of Code 2020, № 3

День 4: Обработка паспортов

Используйте выражение when и изучите разные способы проверки входных данных: вспомогательные функции, работу с диапазонами, проверку принадлежности множеству и сопоставление с определённым регулярным выражением.

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение Себастьяна Айгнера в блоге Kotlin или видео:

YouTube Изучаем Kotlin с командой Kotlin: Advent of Code 2020, № 4

День 5: Посадка по двоичному коду

Используйте функции стандартной библиотеки Kotlin (replace(), toInt(), find()) для работы с двоичным представлением чисел, изучите возможности локальных функций и узнайте, как использовать функцию max() в Kotlin 1.5.

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение Светланы Исаковой в блоге Kotlin или видео:

YouTube Изучаем Kotlin с командой Kotlin: Advent of Code 2020, № 5

День 6: Таможня по собственным правилам

Узнайте, как группировать символы в строках и коллекциях и подсчитывать их с помощью функций стандартной библиотеки: map(), reduce(), sumOf(), intersect() и union().

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение Антона Архипова в блоге Kotlin или видео:

YouTube Изучаем Kotlin с командой Kotlin: Advent of Code 2020, № 6

День 7: Удобные сумки

Узнайте, как использовать регулярные выражения и метод compute() Java для HashMap, позволяющий динамически вычислять значение в map, функцию forEachLine() для чтения файлов, а также сравните два типа алгоритмов поиска: поиск в глубину и поиск в ширину.

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение Паши Финкельштейна в блоге Kotlin или видео:

YouTube Изучаем Kotlin с командой Kotlin: Advent of Code 2020, № 7

День 8: Сбой портативной консоли

Используйте запечатанные классы и лямбды для представления инструкций, множества Kotlin для обнаружения циклов при выполнении программы, последовательности и функцию-построитель sequence { } для создания ленивой коллекции, а также экспериментальную функцию measureTimedValue() для проверки показателей производительности.

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение Себастьяна Айгнера в блоге Kotlin или видео:

YouTube Изучаем Kotlin с командой Kotlin: Advent of Code 2020, № 8

День 9: Ошибка кодирования

Изучите разные способы обработки списков в Kotlin с помощью функций any(), firstOrNull(), firstNotNullOfOrNull(), windowed(), takeIf() и scan(), демонстрирующих идиоматический стиль Kotlin.

  • Прочитайте описание задачи на сайте Advent of Code

  • Посмотрите решение Светланы Исаковой в блоге Kotlin или видео:

YouTube Изучаем Kotlin с командой Kotlin: Advent of Code 2020, № 9

Что дальше?

  • Выполните больше заданий с помощью Kotlin Koans

  • Создавайте работающие приложения с помощью бесплатного курса Kotlin Core от JetBrains Academy

5 января 2026 г.
Книги по KotlinИзучение Kotlin с помощью плагина JetBrains Academy

© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/advent-of-code.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API