Michael de Kaste
12/06/2020, 10:31 AMMichael de Kaste
12/06/2020, 10:31 AMprivate val parsed = input.split("\r\n\r\n").map { it.lines().map(String::toSet) }
override fun part1() = parsed.sumBy{ it.reduce { acc, set -> acc.union(set) }.size }
override fun part2() = parsed.sumBy{ it.reduce { acc, set -> acc.intersect(set) }.size }
but this only solves correctly for part1? The logic is the same (tried to speed things up)
private val parsed = input.split("\r\n\r\n")
.map {
it.lines().map {
it.fold(BitSet(26)){ acc: BitSet, c: Char ->
acc.apply { set(c - 'a') }
}
}
}
override fun part1() = parsed.sumBy { it.reduce { acc, bitSet -> acc.apply { or(bitSet) } }.cardinality() } //CORRECT
override fun part2() = parsed.sumBy { it.reduce { acc, bitSet -> acc.apply { and(bitSet) } }.cardinality() } //INCORRECT ?!?
Michael de Kaste
12/06/2020, 10:32 AM