Advent of Code 2021 day 13
12/13/2021, 5:00 AMDavid Whittaker
12/13/2021, 5:45 AMJakub Gwóźdź
12/13/2021, 5:54 AMMichael Böiers
12/13/2021, 6:21 AMnkiesel
12/13/2021, 6:28 AMprivate fun foldLeft(dots: Set<Dot>, amount: Int): Set<Dot> {
return dots.mapTo(mutableSetOf()) { dot -> if (dot.x < amount) dot else Dot(2 * amount - dot.x, dot.y) }
}
(similar for foldUp
).Jakub Gwóźdź
12/13/2021, 6:47 AMnkiesel
12/13/2021, 6:50 AMJakub Gwóźdź
12/13/2021, 6:50 AMnkiesel
12/13/2021, 6:52 AMnkiesel
12/13/2021, 6:52 AMJakub Gwóźdź
12/13/2021, 6:52 AMJakub Gwóźdź
12/13/2021, 6:53 AMnkiesel
12/13/2021, 6:54 AMnkiesel
12/13/2021, 6:54 AMJakub Gwóźdź
12/13/2021, 6:56 AMnkiesel
12/13/2021, 6:56 AMnkiesel
12/13/2021, 6:57 AMMichael de Kaste
12/13/2021, 7:13 AMMichael de Kaste
12/13/2021, 7:23 AMDan Fingal-Surma
12/13/2021, 8:03 AMDan Fingal-Surma
12/13/2021, 8:07 AMapply
method but then moved to (Point) -> Point
David Whittaker
12/13/2021, 9:00 AMMichael de Kaste
12/13/2021, 9:21 AMobject Day13Tiny : Challenge() {
val parsed = input.split("\r\n\r\n").let { (dots, folds) ->
folds.lines().map { fold -> fold.split("=").let { (ins, i) -> ins to i.toInt() } }
.runningFold(dots.lines().map { dot -> dot.split(",").map(String::toInt) }) { list, (ins, i) ->
list.mapTo(mutableSetOf()) { (x, y) ->
if (ins == "fold along x") listOf(i - abs(i - x), y)
else listOf(x, i - abs(i - y))
}.toList()
}
}.let { results ->
results[1].size to (0..results.last().maxOf { (_, y) -> y }).joinToString("\n", "\n") { y ->
(0..results.last().maxOf { (x, _) -> x }).joinToString("") { x ->
if (listOf(x, y) in results.last()) "█" else "░"
}
}
}
override fun part1() = parsed.first
override fun part2() = parsed.second
}
ephemient
12/13/2021, 9:22 AMfolds.fold(it) { point, fold -> fold(point) }
not my best naming, but it worksMichael Böiers
12/13/2021, 9:58 AMMichael Böiers
12/13/2021, 10:42 AMMichael de Kaste
12/13/2021, 10:49 AMTodor Grudev
12/13/2021, 10:53 AMMarcin Wisniowski
12/13/2021, 10:54 AMphldavies
12/13/2021, 1:20 PMTeodor Penkov
12/13/2021, 2:55 PMPaul Woitaschek
12/13/2021, 4:04 PMEdgars
12/13/2021, 4:27 PMfolds.fold(dots) { dots, fold -> dots.fold(fold) }
which is rather amusing.
https://github.com/edgars-supe/advent-of-code/blob/master/src/main/kotlin/lv/esupe/aoc/year2021/Day13.ktPaul Woitaschek
12/13/2021, 4:27 PMfollowInstruction
because too much folding isn't goodMichael Böiers
12/13/2021, 4:45 PMtodd.ginsberg
12/13/2021, 6:25 PMcrease
because I can’t handle two things being called fold. Or explain it easily.ephemient
12/13/2021, 6:36 PMfold
to reduce
just for extra confusion ;)Paul Woitaschek
12/13/2021, 6:37 PMephemient
12/13/2021, 6:38 PMtodd.ginsberg
12/13/2021, 6:38 PMtodd.ginsberg
12/13/2021, 6:38 PMPaul Woitaschek
12/13/2021, 6:40 PMtodd.ginsberg
12/13/2021, 6:41 PMgnu
12/13/2021, 8:46 PMDavid Whittaker
12/14/2021, 4:54 AMKiet
12/15/2021, 4:37 AM