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: // 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 }
euros ?.firstNotNullOfOrNull { (_, euros) ->
} ?: continue euros
} ?: continue
val common = min(pay, payback) val common = min(pay, payback)
val newPay = pay - common val newPay = pay - common
val newPayback = payback - common val newPayback = payback - common
@ -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")
} }
} }