Вступление
Вы получили работу в качестве министра финансов в своей вымышленной стране на заднем дворе. Вы решили создать свой собственный банк в своей стране для себя и своих менее надежных друзей. Поскольку вы не доверяете своим друзьям, вы решили написать программу для проверки всех транзакций, чтобы предотвратить перерасход ваших друзей за вымышленную валюту и разрушение вашей экономики.
задача
Учитывая начальный баланс и все транзакции, отфильтруйте все транзакции, в которых кто-то пытается перерасходовать, и заблокируйте любого, кто пытается перерасходовать (включая попытку перерасхода на закрытый счет), когда-либо снова использовать ваш банк, отфильтровывая будущие транзакции с его или из него. / ее банковский счет.
Ввод, вывод
Два списка Aи Bкак вход и список Cкак выход. Aэто начальный баланс каждого аккаунта в формате [["Alice", 5], ["Bob", 8], ["Charlie", 2], ...]. Bсписок транзакций в формате [["Bob", "Alice", 3], ["Charlie", "Bob", 5], ...]где ["Bob", "Alice", 3]означает, что Боб хочет заплатить Алисе 3 единицы валюты. Cдолжен иметь тот же формат, что и B. A, BИ Cможет быть в любом подходящем формате.
Тестовые случаи
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: []
счет
Это код-гольф , выигрывает самый короткий код в байтах на каждом языке.
["A", 2, "B", 3, "C", 5]?
A: [["A", 2], ["B", 3], ["C", 4]], B: [["A", "B", 3], ["C", "B", 4]], C: [["C", "B", 4]](действительная сделка после недопустимой один).
Aбыть также словарь, или список кортежей?