Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Aggregate by Operation by dig
def aggr_operation(data: list[tuple[str, int]]) -> dict[str, int]:
letters=set([i[0][1:] for i in data if i[0][-1].isalpha() ])
dictionari={}
for letter in letters:
operations=[data[i][0][0]+str(data[i][1]) for i in range(len(data))
if letter == data[i][0][1:] and not(data[i][0][0]=='/'
and data[i][1]==0 and data[i][0][-1].isalpha() )]
operations=['0']+operations
calculo=''.join(operations)
if '=' in calculo:
calculo=calculo[calculo.find('=')+1:]
dictionari[letter]=eval(calculo)
for keys, values in dictionari.copy().items():
if values==0:
del dictionari[keys]
return dictionari
print("Example:")
print(aggr_operation([("+a", 7), ("-b", 8), ("*a", 10)]))
# These "asserts" are used for self-checking
assert aggr_operation([("+a", 7), ("-b", 8), ("*a", 10)]) == {"a": 70, "b": -8}
assert aggr_operation([]) == {}
assert aggr_operation([("+a", 5), ("+a", -5), ("-a", 5), ("-a", -5)]) == {}
assert aggr_operation([("*a", 0), ("=a", 0), ("/a", 0), ("-a", -5)]) == {"a": 5}
print("The mission is done! Click 'Check Solution' to earn rewards!")
Feb. 28, 2023
Comments: