Spec-Zone.ru › Kotlin 1.9

Задачи Advent of Code на Kotlin

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

  • Advent of Code 2021
  • Advent of Code 2020

Advent of Code 2021

  • Подготовка
  • День 1: Сонарная проверка
  • День 2: Погружение!
  • День 3: Бинарная диагностика
  • День 4: Гигантский кальмар

Подготовка

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

  • Прочитайте наш блог-пост о Advent of Code 2021

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

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

День 1: Сонарная проверка

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Advent of Code 2020

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

  • День 1: Исправление отчёта
  • День 2: Философия паролей
  • День 3: Траектория саней
  • День 4: Обработка паспортов
  • День 5: Блокировка по двоичным кодам
  • День 6: Таможенные сборы
  • День 7: Удобные сумки
  • День 8: Остановка портативных устройств
  • День 9: Ошибка кодирования

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

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

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

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

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

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

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

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

День 3: Траектория саней

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

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

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

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

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

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

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

День 5: Блокировка по двоичным кодам

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

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

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

День 6: Таможенные сборы

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

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

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

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

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

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

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

День 8: Остановка портативных устройств

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

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

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

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

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

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

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

Что дальше?

  • Выполните больше задач с Kotlin Koans

  • Создавайте рабочие приложения с бесплатным треком Kotlin Core от JetBrains Academy

Последнее изменение: 17 мая 2023
Книги по Kotlin Изучение Kotlin с плагином JetBrains Academy

© 2010–2023 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