day05 update

This commit is contained in:
Andrew Glaze
2024-12-07 15:06:04 -05:00
parent 2f399ce790
commit ddd34f68f5

View File

@@ -33,32 +33,14 @@ class Day05 {
return true
}
fun fixOrder(rules: HashMap<Int, List<Int>>, update: List<Int>): List<Int> {
var modUpdate = update.toMutableList()
for (i in 0..<update.count()) {
val curPage = modUpdate[i]
val curRule = rules[curPage]
if (curRule == null) { continue }
for (pre in 0..<i) {
if (curRule.contains(modUpdate[pre])) {
modUpdate[i] = modUpdate[pre]
modUpdate[pre] = curPage
break
}
}
}
// hate this but im lazy
if (!checkOrder(rules, modUpdate)) {
modUpdate = fixOrder(rules, modUpdate).toMutableList()
}
return modUpdate
}
fun part2(input: String): Int {
val (rules, updates) = parse(input)
return updates.filter {update -> !checkOrder(rules, update) }
.map { update -> fixOrder(rules, update) }
.map { update -> update[update.count() / 2] }
.flatMap { update ->
update.filter { curPage ->
rules[curPage]?.filter { update.contains(it) }?.count() == update.count() / 2
}
}
.sum()
}
}