Doháním deficit a zde je řešení pro den 2.
A:
fun hasSameLettersCount(id: String, occurrences: Int): Boolean { val sameLetterCounts = id.groupBy { it } .values .map { it.count() } return occurrences in sameLetterCounts } fun main() { val ids = File("input2.txt").readLines() val twoCounts = ids.filter { hasSameLettersCount(it, 2) }.count() val threeCounts = ids.filter { hasSameLettersCount(it, 3) }.count() println(twoCounts * threeCounts) }
B:
fun main() { val ids = File("input2.txt").readLines().toSet() for (idA in ids) { for (idB in ids) { val diff = getDiff(idA, idB) if (diff.length == idA.length - 1) { println(diff) return } } } } fun getDiff(first: String, second: String) = first.zip(second) { a, b -> if (a == b) a.toString() else "" }.joinToString("")