Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
13 lines proc solution in Clear category for Calculator-III by CDG.Axel
def calculator(log: str) -> str:
second, screen, magic = 0, 0, lambda: (screen, None if screen is None else -screen)[op == '-']
new, op, plus = True, '=', lambda a, b: None if (a and b) is None or abs(a + b) > 99999 else a + b
for key in log:
if key.isdigit():
screen = (screen or 0) * 10 * (not new) + int(key) if new or screen <= 9999 else screen
elif key in '+-':
second = screen = screen if op == '=' or new else plus(second, magic())
elif key == '=' == op:
screen = plus(screen, second)
elif key == '=':
screen = plus((second, screen)[new], (second := magic()))
op = (op, key)[new := key in '+-=']
return 'error' if screen is None else str(screen)
# this is evolution of my code for previous task (where 1 line less)
Feb. 11, 2023