Tarea
Supongamos que ppepole tiene que dividir un billete; cada uno de ellos está identificado por un triple (Name, n, k)compuesto por:
Name: el nombre ;n: la cantidad que tiene que pagar ;k: la cantidad que realmente pagó .
El desafío aquí es descubrir cuánto le debe a quién.
Supuestos
La entrada y salida pueden estar en cualquier formato conveniente.
pnkpLos nombres son cadenas únicas de longitud arbitraria, compuestas de letras minúsculas del alfabeto.
Solución
La solución está representada por el conjunto mínimo de transacciones entre las ppersonas; en particular son triples(from, to, amount)
from:namede la persona que da dinero;to:namede la persona que recibe dinero;amount: cantidad de dinero de la transacción.
NOTA : La suma de todas las deudas ( n) puede diferir de la suma de todas las cantidades ya pagadas ( k). En este caso, debe agregar la salida ('owner', Name, amount)o (Name, 'owner', amount)el formato que haya elegido. Cualquier nombre nunca será owner. La cadena 'propietario' es flexible.
Si existen varios conjuntos mínimos, seleccione el que tenga la suma mínima de todos los importes de las transacciones (valores absolutos); En caso de empate, elija uno de ellos.
Casos de prueba:
inputs(Name,n,k):
[('a',30,40),('b',40,50),('c',30,15)]
[('a',30,30),('b',20,20)]
[('a',30,100),('b',30,2),('c',40,0)]
[('a',344,333),('b',344,200),('c',2,2)]
[('a',450,400),('b',300,300),('c',35,55)]
outputs(from, to, amount):
[('c','a',10),('c','b',5),('owner','b',5)] or [('c','b',10),('c','a',5),('owner','a',5)]
[]
[('owner','a',2),('b','a',28),('c','a',40)] PS: [('owner','a',2),('b','a',68),('c','b',40)] has the same number of transactions, but it is not a valid answer, because the total amount of its transaction is greater than that of the proposed solution.
[('a','owner',11),('b','owner',144)]
[('a','owner',30),('a','c',20)]
Este es el código de golf: el código más corto gana .

Respuestas:
JavaScript (ES6),
252 227 223 222215 bytesToma entrada como
[[n0, k0, name0], [n1, k1, name1], ...].Las transacciones en la solución pueden ser positivas o negativas. El propietario se llama indefinido .
Pruébalo en línea!
Comentado
fuente