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