Introdução
Você conseguiu um emprego como ministro das Finanças no seu país inventado no seu quintal. Você decidiu criar seu próprio banco em seu país para você e seus amigos menos confiáveis. Como você não confia em seus amigos, decidiu escrever um programa para validar todas as transações para impedir que seus amigos gastem demais sua moeda inventada e arruinem sua economia.
Tarefa
Dado o saldo inicial e todas as transações, filtre todas as transações em que alguém tenta gastar mais e bloqueie qualquer pessoa que tente gastar mais (isso inclui tentar gastar mais em uma conta fechada) de nunca mais usar o seu banco, filtrando transações futuras de ou para as dele. / sua conta bancária.
Entrada / Saída
Duas listas Ae Bcomo entrada e uma lista Ccomo saída. Aé o saldo inicial de cada conta com o formato [["Alice", 5], ["Bob", 8], ["Charlie", 2], ...]. Bé uma lista de transações com o formato [["Bob", "Alice", 3], ["Charlie", "Bob", 5], ...]em ["Bob", "Alice", 3]que significa que Bob deseja pagar a Alice 3 unidades monetárias. Cdeve ter o mesmo formato que B. A, BE Cpodem estar em qualquer formato razoável.
Casos de teste
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: []
Pontuação
Este é o código-golfe , o código mais curto em bytes em cada idioma vence.
["A", 2, "B", 3, "C", 5]?
A: [["A", 2], ["B", 3], ["C", 4]], B: [["A", "B", 3], ["C", "B", 4]], C: [["C", "B", 4]](uma transação válida após um um inválido).
ATambém pode ser um dicionário ou uma lista de tuplas?