Fix minimizer

This commit is contained in:
Merlijn 2025-08-28 16:28:52 +02:00
parent fb5250d501
commit c0125afce5
Signed by: ToxicMushroom
SSH key fingerprint: SHA256:fiv+rEfOFbxc5OPNgLT1nNCL/JndxzhkKbIJLp1JcCc

View file

@ -37,10 +37,11 @@ fun main() {
// Minimize transactions:
for ((user, transactions) in payments.iterator()) {
for ((target, pay) in transactions.iterator()) {
val payback = payments[target]?.firstNotNullOf { (other, euros) ->
assert(user == other)
euros
} ?: continue
val payback = payments[target]
?.filter { (other, _) -> other == user }
?.firstNotNullOfOrNull { (_, euros) ->
euros
} ?: continue
val common = min(pay, payback)
val newPay = pay - common
val newPayback = payback - common
@ -51,6 +52,7 @@ fun main() {
payments[target] = payments[target]!!.also {
it[user] = newPayback
}
println("Minimized $user -> $target for $common")
}
}