Files
Advent-of-Code/2023/01/Kotlin/src/main/kotlin/Main.kt
2025-06-06 00:10:39 +02:00

62 lines
2.0 KiB
Kotlin

import java.io.File
fun main(args: Array<String>) {
part2()
}
fun part2() {
val data = File("input_2.txt").readLines()
val map = hashMapOf(
Pair("one", "1"),
Pair("two", "2"),
Pair("three", "3"),
Pair("four", "4"),
Pair("five", "5"),
Pair("six", "6"),
Pair("seven", "7"),
Pair("eight", "8"),
Pair("nine", "9"),
)
var sum = 0
data.forEach { line ->
var convertedString: String = line
for (value in listOf("one", "two", "three", "four", "five", "six", "seven", "eight", "nine")) {
Regex(value).findAll(line).map { it.range }.forEach { range ->
convertedString = convertedString.replaceRange(range.first, range.first + 1, map[value].toString())
}
}
println(convertedString)
val filteredString = convertedString.filter {c: Char -> c.isDigit()}
println(filteredString)
sum += if (filteredString.length < 2) {
//println("${numbers[0]}${numbers[0]}")
"${filteredString[0]}${filteredString[0]}".toInt()
} else {
//println("${numbers[0]}${numbers[numbers.length - 1]}")
"${filteredString[0]}${filteredString[filteredString.length - 1]}".toInt()
}
/*val ranges = Regex("one").findAll(line).map { it.range }//.joinToString("|")
if (ranges.any()) {
println(line.replaceRange(ranges.elementAt(0).first..ranges.elementAt(0).first, "1"))
} else {
println(line)
}*/
}
println("Sum: $sum")
}
fun part1() {
val data = File("input.txt").readLines()
var sum = 0
data.forEach { line ->
val numbers = line.filter { c: Char -> c.isDigit() }
sum += if (numbers.length < 2) {
//println("${numbers[0]}${numbers[0]}")
"${numbers[0]}${numbers[0]}".toInt()
} else {
//println("${numbers[0]}${numbers[numbers.length - 1]}")
"${numbers[0]}${numbers[numbers.length - 1]}".toInt()
}
}
print(sum)
}