Advent of Code 2021 day 6
12/06/2021, 5:00 AMDavid Whittaker
12/06/2021, 5:30 AMDavid Whittaker
12/06/2021, 5:34 AMMichael Böiers
12/06/2021, 5:41 AMJakub Gwóźdź
12/06/2021, 5:42 AMInt
might not make it 🙂Jakub Gwóźdź
12/06/2021, 5:52 AMMichael Böiers
12/06/2021, 5:59 AMtoLong()
calls, given that eachCount()
works on Int
only … EDIT: better now, but still not pretty …knthmn
12/06/2021, 6:21 AMtodd.ginsberg
12/06/2021, 6:32 AMknthmn
12/06/2021, 6:38 AMDeque
Marcin Wisniowski
12/06/2021, 7:46 AMMarcin Wisniowski
12/06/2021, 7:51 AMDan Fingal-Surma
12/06/2021, 7:52 AMephemient
12/06/2021, 7:59 AMephemient
12/06/2021, 8:00 AMkqr
12/06/2021, 9:15 AMknthmn
12/06/2021, 9:15 AMMichael de Kaste
12/06/2021, 9:35 AMephemient
12/06/2021, 9:41 AMephemient
12/06/2021, 10:22 AMBenchmark Mode Cnt Score Error Units
Day6Bench.part1 thrpt 5 98938.375 ± 29221.707 ops/s
Day6Bench.part2 thrpt 5 93935.888 ± 6461.912 ops/s
after:
Benchmark Mode Cnt Score Error Units
Day6Bench.part1 thrpt 5 120113.506 ± 7501.950 ops/s
Day6Bench.part2 thrpt 5 121375.217 ± 2123.868 ops/s
Fredrik Rødland
12/06/2021, 10:23 AMPaul Woitaschek
12/06/2021, 11:27 AMcak
12/06/2021, 11:37 AMPaul Woitaschek
12/06/2021, 11:46 AMephemient
12/06/2021, 1:12 PMfun part1(input: IntArray): Long = input.sumOf(longArrayOf(1421, 1401, 1191, 1154, 1034, 950, 905, 779, 768)::get)
fun part2(input: IntArray): Long = input.sumOf(longArrayOf(6703087164, 6206821033, 5617089148, 5217223242, 4726100874, 4368232009, 3989468462, 3649885552, 3369186778)::get)
in the endTobias Suchalla
12/06/2021, 1:28 PMPaul Woitaschek
12/06/2021, 1:29 PMPaul Woitaschek
12/06/2021, 1:30 PMtodd.ginsberg
12/06/2021, 1:48 PMtodd.ginsberg
12/06/2021, 1:50 PMNate Ridderman
12/06/2021, 5:15 PMPaul Woitaschek
12/06/2021, 5:34 PMPaul Woitaschek
12/06/2021, 5:35 PMPaul Woitaschek
12/06/2021, 5:36 PMgnu
12/06/2021, 5:53 PMphldavies
12/06/2021, 6:28 PMMichael Böiers
12/06/2021, 8:35 PMfun main() = generateSequence(::readLine).single().day06().let { (p1, p2) -> println(p1); println(p2) }
fun String.day06() = split(",").map { it.toInt() }
.run { LongArray(9) { i -> count { it == i }.toLong() } }
.run { listOf(grow(80), grow(256)).map { it.sum() } }
private fun LongArray.grow(n: Int) = copyOf().also { l ->
repeat(n) {
val spawn = l[0]
for (i in 0..8) l[i] = when (i) {
6 -> l[i + 1] + spawn
8 -> spawn
else -> l[i + 1]
}
}
}
Ties
12/06/2021, 10:30 PMMarc Javier
12/08/2021, 5:59 PMPaul Woitaschek
12/08/2021, 6:00 PMMarc Javier
12/08/2021, 6:03 PMPaul Woitaschek
12/08/2021, 6:03 PMPaul Woitaschek
12/08/2021, 6:04 PMVitali Plagov
12/16/2021, 9:39 AMfun partOneAndTwo(input: List<String>, days: Int): Long {
val finalList = input.first().split(",").map { it.toInt() }.toMutableList()
for (day in 1..days) {
for (i in 0 until finalList.size) {
val newNumber = finalList[i].dec()
if (newNumber == -1) {
finalList[i] = 6
finalList.add(8)
} else {
finalList[i] = newNumber
}
}
}
return finalList.count().toLong()
}
Works fine for part 1 and crushes for part 2. Not sure which operation creates extra objects in the heap…kqr
12/16/2021, 10:38 AMkqr
12/16/2021, 10:39 AMfinalList.add(8)