Adviento del código: un evento anual en diciembre desde 2015. Todos los años desde entonces, con el primer día de diciembre, se publica un concurso de rompecabezas de programación todos los días durante veinticinco días. Un conjunto de desafíos orientados a la Navidad proporciona cualquier entrada que tenga que usar para responder con el lenguaje de su elección. Le ofrecemos una plantilla preparada para usar con el lenguaje Kotlin dentro de este repositorio.
Adviento del código Kotlin Template es un tipo particular de repositorio de GitHub que le permite acelerar la fase de configuración y comenzar a escribir sus soluciones AOC de inmediato.
La idea general es sencilla: para crear un nuevo proyecto basado en esta plantilla, debe iniciar sesión en su cuenta GitHub y usar el botón Usar esta plantilla verde. Y recuerda, ¡no lo hagas!
Después de crear un nuevo proyecto basado en esta plantilla en su cuenta, un flujo de trabajo de acciones de GitHub dedicada comenzará y limpiará el código de archivos redundantes. También personalizará el código para usar su nombre de usuario y nombre del proyecto en espacios de nombres y propiedades de graduación. ¿Qué tan genial es eso?
Puede clonarla dentro de la idea IntelliJ cada vez que el actor de usuarios @Actions empuja el segundo compromiso con su repositorio.
Importante
Justo después de abrir el proyecto en la idea de IntelliJ, verifique si usa al menos Java 11 como Project SDK. Para hacer eso, visite la configuración de la estructura del proyecto ( ⌘ ⌘ CMD ; en MacOS o Ctrl Alt Shift s en Windows/Linux).
¡De ahora en adelante, todo está en tus manos! Únase al Advenimiento del Concurso de Código para resolver el día 01 tan pronto como se publique.
Copie el archivo de solución Day01.kt
para los días siguientes e incrementa el número de día.
Nota
¡Recuerda unirte al concurso Kotlin!
Para hacer eso, edite la sección sobre su proyecto sobre icono y agregue el tema aoc-2024-in-kotlin
a su proyecto.
Encontraremos su repositorio y lo contaremos en nuestro sorteo.
Después de crear un nuevo proyecto basado en el repositorio de plantilla actual utilizando el botón Usar esta plantilla , aparecerá un andamio mínimo mínimo en su cuenta de GitHub con la siguiente estructura:
.
├── 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
Nota
Todos los archivos de entrada de tareas ( src/*.txt
) están excluidos del repositorio con .gitignore
: no debemos publicarlos públicamente, como solicitó Eric Wastl.
Cuando aparezca el primer rompecabezas, vaya al Day01.kt
, y para cada función part1
y part2
, proporcione una implementación de algoritmo utilizando los datos input
cargados desde el archivo src/Day01.txt
. Estos datos de entrada son comunes para ambas partes, y puede encontrarlos en la parte inferior de cada día en la página Advicación de Code.
Para leer los datos de entrada, puede ir con el método de utilidad readInput(name: String)
proporcionado en el archivo Utils.kt
, como:
fun main () {
fun part1 ( input : List < String >): Int {
return input.size
}
val input = readInput( " Day01 " )
println (part1(input))
}
Para llamar al algoritmo que está implementando, haga clic en el botón de reproducción verde junto a la definición fun main()
.
Importante
Cree archivos relevantes antes de ejecutar tareas o pruebas, como: src/Day01.txt
o src/Day01_test.txt
.
El archivo Utils.kt
también contiene el método String.md5()
para generar hash MD5 fuera de la cadena dada y espera más funciones auxiliares en aras del principio de beso.
Cada rompecabezas describe algunas condiciones de prueba, una pequeña porción de la información que ayuda a verificar si el valor producido para la entrada de prueba dada es válido. Para manejar ese caso, puede poner dicha entrada en un archivo separado y realizar una verificación contra la salida, como:
fun main () {
// ...
val testInput = readInput( " Day01_test " )
check(part1(testInput) == 13 )
}
El enfoque actual de proporcionar soluciones part1
y part2
dentro del Day##.kt
Con casos simples que no consumen demasiado tiempo y recursos que pueden ser casi innotables, pero cuando la solución toma segundos, vale la pena considerar dividir la solución diaria en dos piezas separadas, como Day07_part1.kt
y Day07_part2.kt
.
El resultado final de su algoritmo se imprimirá en la pantalla para que pueda pasarlo al sitio web Advenimiento del código.
Para acompañar al día siguiente, coloque el archivo Day02.txt
en el src
con datos de entrada relevantes y cree un archivo Day02.kt
con un andamio de código similar:
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))
}
Nota
Hay una bifurcación de este repositorio disponible que utiliza la herramienta Amper para la configuración del proyecto, recientemente introducida por JetBrains.
Para obtener más información, consulte Adviento de Code Kotlin Template - Proyecto Amper.
Si está atrapado con preguntas específicas de Kotlin o cualquier cosa relacionada con esta plantilla, consulte los siguientes recursos: