Advent of Code-Acara tahunan pada bulan Desember sejak 2015. Setiap tahun sejak itu, dengan hari pertama Desember, kontes teka-teki pemrograman diterbitkan setiap hari selama dua puluh lima hari. Satu set tantangan yang berorientasi pada Natal memberikan input apa pun yang harus Anda gunakan untuk menjawab menggunakan bahasa pilihan Anda. Kami menawarkan Anda templat yang disiapkan untuk digunakan dengan bahasa Kotlin dalam repositori ini.
Advent of Code Kotlin Template adalah jenis repositori GitHub tertentu yang memungkinkan Anda mempercepat fase pengaturan dan mulai menulis solusi AOC Anda segera.
Gagasan umum sangat mudah - untuk membuat proyek baru berdasarkan templat ini, Anda perlu masuk ke akun GitHub Anda dan menggunakan tombol Gunakan Template Green ini . Dan ingat - jangan jarinya!
Setelah membuat proyek baru berdasarkan templat ini di akun Anda, alur kerja tindakan GitHub khusus akan dimulai dan membersihkan kode dari file yang berlebihan. Ini juga akan mempersonalisasikan kode untuk menggunakan nama pengguna dan nama proyek Anda di namespaces dan properti lulusan. Seberapa keren itu?
Anda dapat mengkloningnya di dalam ide IntelliJ setiap kali aktor @Actions-User mendorong komitmen kedua ke repositori Anda.
Penting
Tepat setelah membuka proyek di Intellij Ide, verifikasi jika Anda menggunakan setidaknya Java 11 sebagai Proyek SDK. Untuk melakukan itu, kunjungi pengaturan struktur proyek ( ⌘ CMD ; pada macOS atau ctrl alt shift S pada windows/linux).
Mulai sekarang, semuanya ada di tangan Anda! Bergabunglah dengan Kontes Muncul Kode untuk menyelesaikan hari 01 segera setelah diterbitkan.
Salin file solusi Day01.kt
untuk hari -hari berikutnya dan menambah nomor hari.
Catatan
Ingatlah untuk bergabung dengan kontes Kotlin!
Untuk melakukan itu, edit bagian proyek Anda dengan ikon dan tambahkan topik aoc-2024-in-kotlin
ke proyek Anda.
Kami akan menemukan repositori Anda dan menghitung Anda dalam giveaway kami.
Setelah Anda membuat proyek baru berdasarkan repositori template saat ini menggunakan tombol Use This Template , perancah minimal akan muncul di akun GitHub Anda dengan struktur berikut:
.
├── 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
Catatan
Semua file input tugas ( src/*.txt
) dikecualikan dari repositori dengan .gitignore
- kita tidak boleh mempostingnya secara publik, seperti yang diminta Eric Wastl.
Ketika teka -teki pertama muncul, buka Day01.kt
, dan untuk setiap fungsi part1
dan part2
, berikan implementasi algoritma menggunakan data input
yang dimuat dari file src/Day01.txt
. Data input ini adalah umum untuk kedua bagian, dan Anda dapat menemukannya di bagian bawah setiap hari di munculnya halaman kode.
Untuk membaca data input, Anda dapat menggunakan metode utilitas readInput(name: String)
yang disediakan dalam file Utils.kt
, seperti:
fun main () {
fun part1 ( input : List < String >): Int {
return input.size
}
val input = readInput( " Day01 " )
println (part1(input))
}
Untuk menghubungi algoritma yang Anda implementasikan, klik tombol Play hijau di sebelah definisi fun main()
.
Penting
Buat file yang relevan sebelum menjalankan tugas atau tes, seperti: src/Day01.txt
atau src/Day01_test.txt
.
File Utils.kt
juga berisi metode String.md5()
untuk menghasilkan hash md5 dari string yang diberikan dan mengharapkan lebih banyak fungsi pembantu demi prinsip ciuman.
Setiap teka -teki menjelaskan beberapa kondisi pengujian, sebagian kecil dari informasi yang membantu memeriksa apakah nilai yang dihasilkan untuk input tes yang diberikan valid. Untuk menangani kasus itu, Anda dapat memasukkan input seperti itu ke dalam file terpisah dan melakukan cek terhadap output, seperti:
fun main () {
// ...
val testInput = readInput( " Day01_test " )
check(part1(testInput) == 13 )
}
Pendekatan saat ini untuk menyediakan solusi part1
dan part2
dalam satu Day##.kt
kadang -kadang dapat membawa kelemahan karena perhitungan solusi pertama ketika kita berharap untuk bekerja pada bagian kedua saja. Dengan kasus -kasus sederhana yang tidak mengonsumsi terlalu banyak waktu dan sumber daya Anda yang hampir tidak terlihat, tetapi ketika solusinya memakan waktu beberapa detik, ada baiknya mempertimbangkan untuk memecah solusi harian menjadi dua bagian yang terpisah, seperti Day07_part1.kt
dan Day07_part2.kt
.
Hasil akhir dari algoritma Anda akan dicetak di layar sehingga Anda dapat meneruskannya ke situs web Code.
Untuk pergi dengan hari berikutnya, tempatkan file Day02.txt
ke src
dengan data input yang relevan dan buat file Day02.kt
dengan perancah kode yang sama:
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))
}
Catatan
Ada garpu repositori ini yang tersedia yang menggunakan alat amper untuk konfigurasi proyek, yang baru -baru ini diperkenalkan oleh JetBrains.
Untuk lebih lanjut, lihat Advent of Code Kotlin Template - Amper Project.
Jika Anda terjebak dengan pertanyaan khusus Kotlin atau apa pun yang terkait dengan template ini, lihat sumber daya berikut: