62 lines
2.0 KiB
Kotlin
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)
|
|
} |