Aufgabe
Angenommen, der p
Pole muss eine Rechnung teilen. Jeder von ihnen wird durch ein Triple identifiziert, (Name, n, k)
das sich zusammensetzt aus:
Name
: der Name ;n
: der Betrag, den sie / er zu zahlen hat ;k
: der Betrag, den sie / er tatsächlich gezahlt hat .
Hier gilt es herauszufinden, wer wem was schuldet.
Annahmen
Die Ein- und Ausgabe kann in jedem beliebigen Format erfolgen.
p
n
k
p
Namen sind eindeutige Zeichenfolgen beliebiger Länge, die aus Kleinbuchstaben bestehen.
Lösung
Die Lösung wird durch die Mindestanzahl von Transaktionen zwischen den p
Personen dargestellt. insbesondere sind sie dreifach(from, to, amount)
from
:name
von der Person, die Geld gibt;to
:name
der Person, die Geld erhält;amount
: Geldbetrag der Transaktion.
HINWEIS : Die Summe aller Schulden ( n
) kann von der Summe aller bereits bezahlten Beträge ( k
) abweichen . In diesem Fall müssen Sie die Ausgabe ('owner', Name, amount)
oder (Name, 'owner', amount)
das ausgewählte Format hinzufügen . Jeder Name wird niemals sein. owner
Der String 'owner' ist flexibel.
Wenn mehrere Mindestmengen vorhanden sind, wählen Sie die mit der Mindestsumme aller Transaktionsbeträge (Absolutwerte) aus. Wählen Sie im Falle eines Unentschieden eines davon aus.
Testfälle:
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)]
Das ist Code-Golf: Der kürzeste Code gewinnt .
Antworten:
JavaScript (ES6),
252 227 223 222215 BytesÜbernimmt die Eingabe als
[[n0, k0, name0], [n1, k1, name1], ...]
.Transaktionen in der Lösung können entweder positiv oder negativ sein. Der Eigentümer heißt undefiniert .
Probieren Sie es online!
Kommentiert
quelle