Skip to content

Commit

Permalink
2015: day 10 parts 1 & 2
Browse files Browse the repository at this point in the history
  • Loading branch information
plagov committed Feb 6, 2024
1 parent dffbbec commit 0ca8ae4
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 0 deletions.
32 changes: 32 additions & 0 deletions src/main/kotlin/io/plagov/advent/aoc2015/Day10.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package io.plagov.advent.aoc2015

class Day10 {

fun partOne(input: String): Int {
var result = input

repeat(40) {
result = getNextSequence(result)
}

return result.length
}

fun partTwo(input: String): Int {
var result = input

repeat(50) {
result = getNextSequence(result)
}

return result.length
}

private fun getNextSequence(input: String): String {
val regex = """(\d)\1*""".toRegex()

return regex.findAll(input)
.map { "${it.value.length}${it.value.first()}" }
.joinToString(separator = "") { it }
}
}
21 changes: 21 additions & 0 deletions src/test/kotlin/io/plagov/advent/aoc2015/Day10Test.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package io.plagov.advent.aoc2015

import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test

class Day10Test {

private val day10 = Day10()

private val input = "1321131112"

@Test
fun solveFirst() {
assertEquals(492982, day10.partOne(input))
}

@Test
fun solveSecond() {
assertEquals(6989950, day10.partTwo(input))
}
}

0 comments on commit 0ca8ae4

Please sign in to comment.