adamratzman
12/06/2020, 4:51 AMadamratzman
12/06/2020, 5:05 AMprivate val input = readInput("input6.txt")
fun main() {
input.split("\n\n").map { group ->
group.split("\n").map { it.toCharArray().toList() }.flatten().groupBy { it }.size
}.sum().let { println("Part 1: $it") }
input.split("\n\n").map { group ->
group.split("\n").map { it.toCharArray().toList() }.flatten().groupBy { it }
.map { it.value }.filter { it.size == group.split("\n").size }.size
}.sum().let { println("Part 2: $it") }
}
adamratzman
12/06/2020, 5:06 AMbjonnh
12/06/2020, 5:06 AMadamratzman
12/06/2020, 5:06 AMadamratzman
12/06/2020, 5:06 AMadamratzman
12/06/2020, 5:07 AMbjonnh
12/06/2020, 5:08 AMbjonnh
12/06/2020, 5:08 AMbjonnh
12/06/2020, 5:09 AMfun main() {
val groups = textFile("data/2020/06_input.txt").split("\n\n")
groups.map {
it.replace("\n", "").toSet().size
}.sum().let { println(it) }
groups.map {
val x = it.split("\n").map {
it.toSet()
}
x.fold(x.first()) { acc, value ->
acc.intersect(value)
}.size
}.sum().let { println(it) }
}
bjonnh
12/06/2020, 5:09 AMadamratzman
12/06/2020, 5:09 AMadamratzman
12/06/2020, 5:09 AMKroppeb
12/06/2020, 5:09 AMKroppeb
12/06/2020, 5:09 AMKroppeb
12/06/2020, 5:09 AMbjonnh
12/06/2020, 5:09 AMbjonnh
12/06/2020, 5:10 AMbjonnh
12/06/2020, 5:11 AMadamratzman
12/06/2020, 5:11 AMKroppeb
12/06/2020, 5:12 AMbjonnh
12/06/2020, 5:12 AMbjonnh
12/06/2020, 5:12 AMbjonnh
12/06/2020, 5:12 AMbjonnh
12/06/2020, 5:13 AMKroppeb
12/06/2020, 5:14 AM+u
instead of +b
bjonnh
12/06/2020, 5:17 AMDavid Whittaker
12/06/2020, 5:20 AMadamratzman
12/06/2020, 5:31 AMbjonnh
12/06/2020, 5:37 AMval groups = textFile("data/2020/06_input.txt").split("\n\n")
println(groups.sumBy { it.replace("\n", "").toSet().size })
println(groups.sumBy { it.split("\n").map { it.toSet() }.reduce { a, v -> a.intersect(v) }.size })
bjonnh
12/06/2020, 5:41 AMbjonnh
12/06/2020, 5:45 AMbjonnh
12/06/2020, 5:45 AMbjonnh
12/06/2020, 5:45 AMbjonnh
12/06/2020, 5:47 AMadamratzman
12/06/2020, 5:47 AMbjonnh
12/06/2020, 5:48 AMbjonnh
12/06/2020, 5:48 AMadamratzman
12/06/2020, 5:48 AMbjonnh
12/06/2020, 5:48 AMbjonnh
12/06/2020, 5:49 AMbjonnh
12/06/2020, 5:51 AMadamratzman
12/06/2020, 5:51 AMadamratzman
12/06/2020, 5:51 AMbjonnh
12/06/2020, 5:51 AMbjonnh
12/06/2020, 5:52 AMbjonnh
12/06/2020, 5:53 AMadamratzman
12/06/2020, 5:53 AMadamratzman
12/06/2020, 5:54 AMbjonnh
12/06/2020, 5:54 AMbjonnh
12/06/2020, 5:54 AMephemient
12/06/2020, 7:51 AMephemient
12/06/2020, 7:53 AMEdgars
12/06/2020, 8:58 AMJoris PZ
12/06/2020, 9:27 AMval p06 = suspend {
val answerLinesPerGroup = input.split("\n\n").map { it.lines() }
answerLinesPerGroup.map { answerLines ->
answerLines.joinToString("").groupingBy { it }.eachCount().keys.count()
}.sum().print { "Part 1: $it" }
answerLinesPerGroup.map { answerLines ->
answerLines.joinToString("").groupingBy { it }.eachCount().filterValues { it == answerLines.size }.keys.count()
}.sum().print { "Part 2: $it" }
}
I spent some time trying to get rid of the duplication but couldn't find an elegant way to retain the group size so just did it like thisandyb
12/06/2020, 10:03 AMfun main() {
val groupDeclarations: List<List<String>> = resourceFile("day06/DeclarationForm.txt").readText()
.split("\n\n")
.map { it.split("\n") }
println(groupDeclarations.sumBy { declarations -> ('a'..'z').filter { c -> declarations.any { it.contains(c) } }.size })
println(groupDeclarations.sumBy { declarations -> ('a'..'z').filter { c -> declarations.all { it.contains(c) } }.size })
}
Michael de Kaste
12/06/2020, 10:26 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:29 AMNir
12/06/2020, 1:25 PMNir
12/06/2020, 1:25 PMimport Utils.*
fun getData() = (aocDataDir / "day6.txt").readText()
.split("\n\n")
.map { it.split("\n").filter { it.isNotEmpty() }.map { it.toSet() }}
fun part1() = getData().sumBy { group ->
group.reduce { acc, set -> acc union set }.size
}
fun part2() = getData().sumBy { group ->
group.reduce { acc, set -> acc intersect set }.size
}
Nir
12/06/2020, 1:26 PMtodd.ginsberg
12/06/2020, 2:09 PMtodd.ginsberg
12/06/2020, 2:17 PMandyb
12/06/2020, 2:21 PMval groupDeclarations: List<List<Set<Char>>> = resourceFile("day06/DeclarationForm.txt").readText()
.split("\n\n")
.map { it.lines().map(String::toSet) }
todd.ginsberg
12/06/2020, 2:23 PMtodd.ginsberg
12/06/2020, 2:23 PMclass Day06(input: String) {
private val answers: List<String> = input.split("\n\n").map { it.removeSuffix("\n") }
fun solvePart1(): Int =
answers.map { it.replace("\n", "") }.sumBy { it.toSet().size }
fun solvePart2(): Int =
answers.map { it.lines() }.sumBy { group ->
group
.joinToString("")
.groupingBy { it }
.eachCount()
.count { it.value == group.size }
}
}
I'll probably revise this. It doesn't feel right.Nir
12/06/2020, 2:25 PMNir
12/06/2020, 2:25 PMandyb
12/06/2020, 2:26 PMprintln(groupDeclarations.sumBy { it.reduce{ acc,declaration -> acc.union(declaration)}.size })
println(groupDeclarations.sumBy { it.reduce{ acc,declaration -> acc.intersect(declaration)}.size })
todd.ginsberg
12/06/2020, 2:27 PMtodd.ginsberg
12/06/2020, 2:27 PMJoris PZ
12/06/2020, 4:41 PM| Platform | Average (ms) | Measurements (ms) |
| -----------------| ----------------------:|------------------:|
| JVM (OpenJDK 11) | 7.4 ± 10.7 | `52, 10, 11, 12, 7, 5, 8, 6, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2` |
| Node JS | 19.4 ± 21.0 | `108, 29, 20, 22, 13, 11, 11, 11, 14, 13, 15, 16, 13, 12, 11, 15, 9, 12, 10, 14` |
| Native | 58.5 ± 5.0 | `64, 61, 63, 55, 58, 56, 65, 54, 56, 58, 72, 62, 54, 52, 54, 55, 59, 52, 52, 59` |
Dias
12/10/2020, 10:58 AMDias
12/10/2020, 10:59 AMandyb
12/10/2020, 11:03 AMDias
12/10/2020, 11:10 AMDias
12/10/2020, 11:12 AMandyb
12/10/2020, 11:13 AMandyb
12/10/2020, 11:15 AMDias
12/10/2020, 11:16 AMandyb
12/10/2020, 11:20 AMDias
12/10/2020, 11:23 AMDias
12/10/2020, 11:24 AMDias
12/10/2020, 12:03 PMDias
12/10/2020, 12:04 PMandyb
12/10/2020, 12:04 PMDias
12/10/2020, 12:11 PMDias
12/10/2020, 12:12 PMtodd.ginsberg
12/10/2020, 2:53 PM