Wprowadzenie
Dostałeś pracę jako minister finansów w swoim wymyślonym kraju na swoim podwórku. Zdecydowałeś się stworzyć własny bank w swoim kraju dla siebie i swoich mniej godnych zaufania przyjaciół. Ponieważ nie ufasz swoim znajomym, postanowiłeś napisać program do sprawdzania wszystkich transakcji, aby powstrzymać znajomych przed nadmiernym wydatkowaniem gotowej waluty i zrujnowaniem twojej gospodarki.
Zadanie
Biorąc pod uwagę saldo początkowe i wszystkie transakcje, odfiltruj wszystkie transakcje, w których ktoś próbuje przekroczyć wydatki, i zablokuj każdego, kto spróbuje je przekroczyć (obejmuje to próbę przekroczenia wydatków na zamkniętym koncie), aby nigdy więcej nie korzystał z Twojego banku, odfiltrowując przyszłe transakcje do lub z jego / jej konto bankowe.
Wejście wyjście
Dwie listy A
i B
jako dane wejściowe oraz lista C
jako dane wyjściowe. A
to saldo początkowe każdego konta w formacie [["Alice", 5], ["Bob", 8], ["Charlie", 2], ...]
. B
to lista transakcji w formacie, w [["Bob", "Alice", 3], ["Charlie", "Bob", 5], ...]
którym ["Bob", "Alice", 3]
Bob chce zapłacić jednostkom walutowym Alice 3. C
powinien mieć taki sam format jak B
. A
, B
I C
mogą być w każdym rozsądnym formacie.
Przypadki testowe
A: [["Alice", 5], ["Bob", 2]]
B: [["Alice", "Bob", 5], ["Bob", "Alice" 7]]
C: [["Alice", "Bob", 5], ["Bob", "Alice" 7]]
A: [["A", 2], ["B", 3], ["C", 5]]
B: [["C", "A", 2], ["B", "C", 4], ["A", "B", 2]]
C: [["C", "A", 2]]
A: [["A", 2], ["B", 3]]
B: [["A", "B", 2], ["A", "B", 2]]
C: [["A", "B", 2]]
A: [["A", 4], ["B", 0]]
B: [["A", "B", 1], ["A", "B", 5], ["A", "B", 2]]
C: [["A", "B", 1]]
A: [["A", 2], ["B", 3], ["C", 4]]
B: [["A", "B", 3], ["C", "B", 4]]
C: [["C", "B", 4]]
A: [["A", 2], ["B", 3], ["C", 4]]
B: [["A", "B", 3], ["B", "A", 4], ["C", "B" 2]]
C: []
Punktacja
To jest golf-golf , wygrywa najkrótszy kod w bajtach w każdym języku.
A
to być także słownik lub lista krotek?["A", 2, "B", 3, "C", 5]
?A: [["A", 2], ["B", 3], ["C", 4]]
,B: [["A", "B", 3], ["C", "B", 4]]
,C: [["C", "B", 4]]
(ważna transakcja po nieprawidłowym jeden).Odpowiedzi:
JavaScript (ES6),
918879 bajtówZaoszczędź 8 bajtów dzięki @NahuelFouilleul
Pobiera dane wejściowe w składni curry
(a)(b)
.Przypadki testowe
Pokaż fragment kodu
Upiększone i skomentowane
źródło
a=>b=>b.filter(([x,y,z])=>(a[x]-=z)>0&a[y]>0?a[y]+=z:0,a.map(([x,y])=>a[x]=y+1))
przenoszeniem perlowego rozwiązania do javascript?Perl 5, 72 + 2 (-ap) = 74 bajty
spróbuj online
źródło
Python 2 , 103 bajty
Wypróbuj online!
-12 dzięki ovs .
Dłuższy z powodu ograniczeń formatu wyjściowego:
W przeciwnym razie mógłbym to zrobić dla 92 bajtów:
źródło
Rubinowy , 57 bajtów
Wypróbuj online!
Pobiera dane wejściowe
A
jakoHash
w formacie{"A"=>2, "B"=>3}
. Dane wejścioweB
i wyjścioweC
mają sugerowany format.Wyjaśnienie
źródło
C ++, 193 bajty
Wprowadź A jako
std::map
, B jakostd::list
.Wypróbuj online!
źródło