introduction
Vous avez obtenu un emploi en tant que ministre des Finances dans votre pays inventé dans votre arrière-cour. Vous avez décidé de créer votre propre banque dans votre pays pour vous et vos amis moins fiables. Puisque vous ne faites pas confiance à vos amis, vous avez décidé d'écrire un programme pour valider toutes les transactions afin d'empêcher vos amis de dépenser trop cher et de ruiner votre économie.
Tâche
Compte tenu du solde de départ et de toutes les transactions, filtrez toutes les transactions où quelqu'un essaie de dépenser trop et empêchez toute personne qui essaie de dépenser trop (cela inclut essayer de dépenser trop pour un compte fermé) de ne plus jamais utiliser votre banque en filtrant les transactions futures vers ou depuis son / son compte bancaire.
Entrée sortie
Deux listes A
et B
en entrée et une liste C
en sortie. A
est le solde de départ de chaque compte au format [["Alice", 5], ["Bob", 8], ["Charlie", 2], ...]
. B
est une liste de transactions au format [["Bob", "Alice", 3], ["Charlie", "Bob", 5], ...]
où ["Bob", "Alice", 3]
Bob veut payer Alice 3 unités monétaires. C
devrait avoir le même format que B
. A
, B
Et C
peut - être dans tout format raisonnable.
Cas de test
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: []
Notation
C'est le code-golf , le code le plus court en octets dans chaque langue gagne.
A
également être un dictionnaire ou une liste de tuples?["A", 2, "B", 3, "C", 5]
?A: [["A", 2], ["B", 3], ["C", 4]]
,B: [["A", "B", 3], ["C", "B", 4]]
,C: [["C", "B", 4]]
(une transaction valide suite à un un non valide).Réponses:
JavaScript (ES6),
918879 octets8 octets enregistrés grâce à @NahuelFouilleul
Prend des entrées dans la syntaxe de curry
(a)(b)
.Cas de test
Afficher l'extrait de code
Embellie et commentée
la source
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))
portage de la solution perl en javascript?Perl 5, 72 + 2 (-ap) = 74 octets
essayez-le en ligne
la source
Python 2 , 103 octets
Essayez-le en ligne!
-12 grâce aux ovs .
Plus longue en raison des restrictions de format de sortie:
Sinon, j'aurais pu le faire pour 92 octets:
la source
Rubis , 57 octets
Essayez-le en ligne!
Prend l'entrée en
A
tant queHash
dans le format{"A"=>2, "B"=>3}
. L'entréeB
et la sortieC
sont dans le format suggéré.Explication
la source
C ++, 193 octets
Entrez A as
std::map
, B asstd::list
.Essayez-le en ligne!
la source