Появление Кодекса-ежегодное мероприятие в декабре с 2015 года. С тех пор, с первого дня декабря, конкурс программных головоломок публикуется каждый день в течение двадцати пяти дней. Набор проблем, ориентированных на Рождество, обеспечивает любой вход, который вы должны использовать для ответа, используя язык по вашему выбору. Мы предлагаем вам шаблон, подготовленный для использования с языком котлин в этом репозитории.
Появление кода Kotlin Template - это конкретный тип репозитория GitHub, который позволяет вам ускорить фазу установки и немедленно начать писать ваши решения AOC.
Общая идея проста - чтобы создать новый проект на основе этого шаблона, вам необходимо войти в свою учетную запись GitHub и использовать кнопку «Использовать этот шаблон зеленый». И помните - не разжигайте это!
После создания нового проекта, основанного на этом шаблоне в вашей учетной записи, рабочий процесс GitHub Github запустит и очистит код из избыточных файлов. Он также персонализирует код для использования вашего имени пользователя и имени проекта в пространствах имен и свойствах Gradle. Насколько это круто?
Вы можете клонировать его в идее IntelliJ всякий раз, когда актер @Action-User подталкивает второй приверженность вашему репозиторию.
Важный
Сразу после открытия проекта в Intellij Idea, проверьте, используете ли вы хотя бы Java 11 в качестве Project SDK. Для этого посетите настройки структуры проекта ( ⌘ CMD ; на MacOS или Ctrl Alt Shift S в Windows/Linux).
С этого момента все в ваших руках! Присоединяйтесь к конкурсу «Появление кода», чтобы решить день 01 , как только он будет опубликован.
Скопируйте файл решения Day01.kt
в течение следующих дней и увеличить номер дня.
Примечание
Не забудьте присоединиться к конкурсу Kotlin!
Чтобы сделать это, отредактируйте раздел вашего проекта с Icon и добавьте в свой проект тему aoc-2024-in-kotlin
.
Мы найдем ваш хранилище и подсчитаем вас в нашей раздаче.
После создания нового проекта, основанного на текущем репозитории шаблона, используя кнопку «Использовать этот шаблон» , в вашей учетной записи Github появится минимальный каркас со следующей структурой:
.
├── README.md README file
├── build.gradle.kts Gradle configuration created with Kotlin DSL
├── settings.gradle.kts Gradle project settings
├── gradle* Gradle wrapper files
└── src
├── Day01.kt An empty implementation for the first AoC day
├── Utils.kt A set of utility methods shared across your days
│
│ (create those files manually)
├── Day01.txt An empty file for the Day 01 input data
└── Day01_test.txt An optional Day 01 test input data used for checks
Примечание
Все входные файлы задачи ( src/*.txt
) исключены из репозитория с .gitignore
- мы не должны публиковать их публично, как просил Эрик Вастл.
Когда появится первая головоломка, перейдите в Day01.kt
, и для каждой функции part1
и part2
предоставьте реализацию алгоритма, используя input
данные, загруженные из файла src/Day01.txt
. Эти входные данные являются общими для обеих частей, и вы можете найти их в нижней части каждого дня на странице Code.
Чтобы прочитать входные данные, вы можете перейти с помощью метода утилиты readInput(name: String)
представленное в файле Utils.kt
, например:
fun main () {
fun part1 ( input : List < String >): Int {
return input.size
}
val input = readInput( " Day01 " )
println (part1(input))
}
Чтобы вызвать алгоритм, который вы реализуете, нажмите кнопку «Зеленая воспроизведение» рядом с определением fun main()
.
Важный
Создайте соответствующие файлы перед запуском задач или тестов, например: src/Day01.txt
или src/Day01_test.txt
.
Файл Utils.kt
также содержит метод String.md5()
для генерации хэша MD5 из данной строки и ожидает больше вспомогательных функций ради принципа поцелуя.
Каждая головоломка описывает некоторые условия испытания, небольшую часть информации, которая помогает проверить, является ли созданное значение для данного тестового ввода. Чтобы обработать этот случай, вы можете поместить такой ввод в отдельный файл и выполнить проверку на вывод, например:
fun main () {
// ...
val testInput = readInput( " Day01_test " )
check(part1(testInput) == 13 )
}
Текущий подход к предоставлению решений как part1
, так и part2
в течение одного Day##.kt
-файл иногда может приносить недостаток из -за первого расчета решения, когда мы рассчитываем работать только во второй части. С простыми случаями, которые не потребляют слишком много вашего времени и ресурсов, которые могут быть почти незаметными, но когда решение занимает секунды, стоит подумать о разбите ежедневное решение на две отдельные части, такие как Day07_part1.kt
и Day07_part2.kt
.
Окончательный результат вашего алгоритма будет напечатан на экране, чтобы вы могли передать его на веб -сайт Code.
Чтобы перейти на следующий день, поместите файл Day02.txt
в src
с соответствующими входными данными и создайте файл Day02.kt
с аналогичным кодовым каркасом:
fun main () {
fun part1 ( input : List < String >): Int {
return 0
}
fun part2 ( input : List < String >): Int {
return 0
}
val input = readInput( " Day02 " )
println (part1(input))
println (part2(input))
}
Примечание
Существует вилка этого репозитория, который использует Amper Tool для конфигурации проекта, недавно введенный JetBrains.
Для получения дополнительной информации см. Advent of Code Kotlin Template - Amper Project.
Если вы застряли в вопросах, специфичных для котлина, или чем-то, что связано с этим шаблоном, ознакомьтесь с следующими ресурсами: