Add solutions to the first day of AOC-23
This commit is contained in:
parent
17bdab0a43
commit
acf076a7ac
8 changed files with 1140 additions and 0 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,3 +1,4 @@
|
||||||
*.o
|
*.o
|
||||||
bin
|
bin
|
||||||
target
|
target
|
||||||
|
*.jar
|
||||||
|
|
1000
advent-of-code-2023/01/input.txt
Normal file
1000
advent-of-code-2023/01/input.txt
Normal file
File diff suppressed because it is too large
Load diff
23
advent-of-code-2023/01/part-1/main.kt
Normal file
23
advent-of-code-2023/01/part-1/main.kt
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
var sum = 0
|
||||||
|
File("../input.txt").forEachLine{
|
||||||
|
var firstDigit = ""
|
||||||
|
var lastDigit = ""
|
||||||
|
|
||||||
|
for (c in it) {
|
||||||
|
if (c.isDigit()) {
|
||||||
|
lastDigit = c.toString()
|
||||||
|
if (firstDigit == "") {
|
||||||
|
firstDigit = c.toString()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sum += (firstDigit + lastDigit).toInt()
|
||||||
|
}
|
||||||
|
println(sum)
|
||||||
|
}
|
4
advent-of-code-2023/01/part-1/test.txt
Normal file
4
advent-of-code-2023/01/part-1/test.txt
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
1abc2
|
||||||
|
pqr3stu8vwx
|
||||||
|
a1b2c3d4e5f
|
||||||
|
treb7uchet
|
39
advent-of-code-2023/01/part-2/main.kt
Normal file
39
advent-of-code-2023/01/part-2/main.kt
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
var sum = 0
|
||||||
|
File("../input.txt").forEachLine{
|
||||||
|
var firstDigit = ""
|
||||||
|
var lastDigit = ""
|
||||||
|
|
||||||
|
for (c in replaceStrWithDigits(it)) {
|
||||||
|
if (c.isDigit()) {
|
||||||
|
lastDigit = c.toString()
|
||||||
|
if (firstDigit == "") {
|
||||||
|
firstDigit = c.toString()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sum += (firstDigit + lastDigit).toInt()
|
||||||
|
}
|
||||||
|
println(sum)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun replaceStrWithDigits(line: String): String {
|
||||||
|
var s = line
|
||||||
|
var words = arrayOf("one", "two", "three", "four", "five", "six", "seven", "eight", "nine")
|
||||||
|
var i = 0
|
||||||
|
while (i < s.length) {
|
||||||
|
for (w in words.indices) {
|
||||||
|
if (s.slice(i..s.length-1).startsWith(words[w])) {
|
||||||
|
s = s.replaceRange(i, i + 1, (w + 1).toString())
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
return s
|
||||||
|
}
|
7
advent-of-code-2023/01/part-2/test.txt
Normal file
7
advent-of-code-2023/01/part-2/test.txt
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
two1nine
|
||||||
|
eightwothree
|
||||||
|
abcone2threexyz
|
||||||
|
xtwone3four
|
||||||
|
4nineeightseven2
|
||||||
|
zoneight234
|
||||||
|
7pqrstsixteen
|
62
advent-of-code-2023/01/readme.md
Normal file
62
advent-of-code-2023/01/readme.md
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
# Day 1: Trebuchet?!
|
||||||
|
|
||||||
|
Something is wrong with global snow production, and you've been selected to take a look.
|
||||||
|
The Elves have even given you a map; on it, they've used stars to mark the top fifty locations
|
||||||
|
that are likely to be having problems.
|
||||||
|
|
||||||
|
You've been doing this long enough to know that to restore snow operations,
|
||||||
|
you need to check all fifty stars by December 25th.
|
||||||
|
|
||||||
|
Collect stars by solving puzzles. Two puzzles will be made available on each day in the Advent calendar;
|
||||||
|
the second puzzle is unlocked when you complete the first. Each puzzle grants one star. Good luck!
|
||||||
|
|
||||||
|
You try to ask why they can't just use a weather machine ("not powerful enough")
|
||||||
|
and where they're even sending you ("the sky") and why your map looks mostly blank
|
||||||
|
("you sure ask a lot of questions") and hang on did you just say the sky
|
||||||
|
("of course, where do you think snow comes from") when you realize that the Elves
|
||||||
|
are already loading you into a trebuchet ("please hold still, we need to strap you in").
|
||||||
|
|
||||||
|
As they're making the final adjustments, they discover that their calibration document
|
||||||
|
(your puzzle input) has been amended by a very young Elf who was apparently just excited to show off
|
||||||
|
her art skills. Consequently, the Elves are having trouble reading the values on the document.
|
||||||
|
|
||||||
|
The newly-improved calibration document consists of lines of text;
|
||||||
|
each line originally contained a specific calibration value that the Elves now need to recover.
|
||||||
|
On each line, the calibration value can be found by combining the first digit and the last digit
|
||||||
|
(in that order) to form a single two-digit number.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
```
|
||||||
|
1abc2
|
||||||
|
pqr3stu8vwx
|
||||||
|
a1b2c3d4e5f
|
||||||
|
treb7uchet
|
||||||
|
```
|
||||||
|
|
||||||
|
In this example, the calibration values of these four lines are `12`, `38`, `15`, and `77`.
|
||||||
|
Adding these together produces `142`.
|
||||||
|
|
||||||
|
Consider your entire calibration document. What is the sum of all of the calibration values?
|
||||||
|
|
||||||
|
## Part Two
|
||||||
|
|
||||||
|
Your calculation isn't quite right. It looks like some of the digits are actually spelled out with letters:
|
||||||
|
`one`, `two`, `three`, `four`, `five`, `six`, `seven`, `eight`, and `nine` also count as valid "digits".
|
||||||
|
|
||||||
|
Equipped with this new information, you now need to find the real first and last digit on each line. For example:
|
||||||
|
|
||||||
|
```
|
||||||
|
two1nine
|
||||||
|
eightwothree
|
||||||
|
abcone2threexyz
|
||||||
|
xtwone3four
|
||||||
|
4nineeightseven2
|
||||||
|
zoneight234
|
||||||
|
7pqrstsixteen
|
||||||
|
```
|
||||||
|
|
||||||
|
In this example, the calibration values are `29`, `83`, `13`, `24`, `42`, `14`, and `76`.
|
||||||
|
Adding these together produces `281`.
|
||||||
|
|
||||||
|
What is the sum of all of the calibration values?
|
4
advent-of-code-2023/readme.md
Normal file
4
advent-of-code-2023/readme.md
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
# Advent of code 2023
|
||||||
|
|
||||||
|
My goal is to learn the basics of Kotlin.
|
||||||
|
I have never worked with Kotlin or Java before.
|
Loading…
Reference in a new issue