Code of Code-2015 년 이후 12 월의 연례 행사. 매년 12 월 첫날 이후 매일 25 일 동안 프로그래밍 퍼즐 콘테스트가 출판됩니다. 일련의 크리스마스 지향적 과제는 선택한 언어를 사용하여 대답하기 위해 사용해야하는 모든 입력을 제공합니다. 이 저장소 내에서 Kotlin 언어로 사용할 준비가 된 템플릿을 제공합니다.
코드의 출현 Kotlin Template 는 설정 단계를 가속화하고 즉시 AOC 솔루션 작성을 시작할 수있는 특정 유형의 GitHub 저장소입니다.
일반적인 아이디어는 간단합니다.이 템플릿을 기반으로 새 프로젝트를 만들려면 GitHub 계정에 로그인 하고이 템플릿 녹색 버튼을 사용해야합니다. 그리고 기억하십시오 - 그것을 포크하지 마십시오!
계정 에서이 템플릿을 기반으로 새 프로젝트를 작성한 후 전용 GitHub Actions 워크 플로가 중복 파일에서 코드를 시작하고 정리합니다. 또한 네임 스페이스 및 Gradle 속성에서 사용자 이름과 프로젝트 이름을 사용하도록 코드를 개인화합니다. 얼마나 멋진가요?
@action-user 액터가 두 번째 커밋을 저장소에 밀어 넣을 때마다 지능 아이디어 내에서 복제 할 수 있습니다.
중요한
Intellij Idea에서 프로젝트를 개설 한 직후에 Java 11 이상을 Project SDK로 사용하는지 확인하십시오. 이렇게하려면 프로젝트 구조 설정 ( ⌘ CMD ; Windows/Linux의 MacOS 또는 Ctrl Alt Shift ) 을 방문하십시오.
이제부터 모든 것이 당신의 손에 있습니다! 코드 콘테스트에 가입하여 발표 되 자마자 01 일을 해결하십시오.
다음 날의 Day01.kt
솔루션 파일을 복사하고 주일 번호를 증가시킵니다.
메모
Kotlin 콘테스트에 참여하는 것을 잊지 마십시오!
이렇게하려면 아이콘으로 섹션에 관한 프로젝트를 편집하고 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
가있는 저장소에서 제외됩니다. Eric Wastl이 요청한대로 공개적으로 게시해서는 안됩니다.
첫 번째 퍼즐이 나타나면 Day01.kt
로 이동하여 각 part1
및 part2
함수에 대해 src/Day01.txt
파일에서로드 된 input
데이터를 사용하여 알고리즘 구현을 제공하십시오. 이 입력 데이터는 두 부분 모두에 공통적이며 코드 페이지의 출현에서 매일 맨 아래에서 찾을 수 있습니다.
입력 데이터를 읽으려면 Utils.kt
파일에 제공된 readInput(name: String)
유틸리티 메소드를 사용하여 다음과 같이 이동할 수 있습니다.
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
파일에는 주어진 문자열에서 md5 해시를 생성하기위한 String.md5()
메소드도 포함되어 있으며 키스 원칙을 위해 더 많은 도우미 함수를 기대합니다.
각 퍼즐은 일부 테스트 조건에 대해 설명합니다. 정보의 작은 부분은 주어진 테스트 입력의 생성 된 값이 유효한지 확인하는 데 도움이됩니다. 이 사례를 처리하려면 이러한 입력을 별도의 파일에 넣고 다음과 같은 출력에 대한 검사를 수행 할 수 있습니다.
fun main () {
// ...
val testInput = readInput( " Day01_test " )
check(part1(testInput) == 13 )
}
Day##.kt
파일 내에 part1
및 part2
솔루션을 모두 제공하는 현재 접근 방식은 두 번째 부분에서만 작업 할 것으로 예상 할 때 첫 번째 솔루션 계산으로 인해 때때로 불이익을 가져올 수 있습니다. 거의 눈에 띄지 않을 수있는 시간과 자원을 너무 많이 소비하지 않는 간단한 사례를 사용하면 솔루션이 몇 초가 걸리면 Day07_part1.kt
및 Day07_part2.kt
와 같은 두 개의 분리 된 조각으로 일일 솔루션을 끊는 것이 좋습니다.
알고리즘의 최종 결과는 화면에 인쇄되어 코드 웹 사이트의 출현으로 전달할 수 있습니다.
다음날과 관련하여 관련 입력 데이터와 함께 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))
}
메모
최근 JetBrains에서 도입 한 Amper Project for Project 구성을 사용하는이 저장소의 포크가 있습니다.
자세한 내용은 코드 Kotlin 템플릿 - Amper Project의 출현을 참조하십시오.
Kotlin 관련 질문이나이 템플릿과 관련된 내용이있는 경우 다음 리소스를 확인하십시오.