object Day2 : AdventOfCode({ val parsed = input .split(",") .map { it.split("-").let { (a,b) -> a.toLong()..b.toLong() } } fun String.repeats(size: Int): Boolean = when{ size > length / 2 -> false chunked(size).distinct().size == 1 -> true else -> repeats(size + 1) } fun solve(firstElement: (String) -> Int) = parsed.flatMap { range -> range.filter { number -> number.toString().let { candidate -> candidate.repeats(firstElement(candidate)) } } }.sum() part1{ solve { (it.length + 1) / 2 } } part2{ solve { 1 } } })