from operator import lt as __operator_lt from operator import gt as __operator_gt from __builtins import next as __builtins_next def __minmax_reduce(op, args, key): if key is None: if len(args) == 2: return args[0] if op(args[0], args[1]) else args[1] if len(args) == 0: raise TypeError('expected 1 arguments, got 0') if len(args) == 1: args = args[0] args = iter(args) res = __builtins_next(args) if res is StopIteration: raise ValueError('args is an empty sequence') while True: i = __builtins_next(args) if i is StopIteration: break if key is None: if op(i, res): res = i else: if op(key(i), key(res)): res = i return res def min(*args, key=None): return __minmax_reduce(__operator_lt, args, key) def max(*args, key=None): return __minmax_reduce(__operator_gt, args, key) def all(iterable): for i in iterable: if not i: return False return True def any(iterable): for i in iterable: if i: return True return False def enumerate(iterable, start=0): n = start for elem in iterable: yield n, elem ++n def sum(iterable): res = 0 for i in iterable: res += i return res def map(f, iterable): for i in iterable: yield f(i) def filter(f, iterable): for i in iterable: if f(i): yield i def zip(a, b): a = iter(a) b = iter(b) while True: ai = __builtins_next(a) bi = __builtins_next(b) if ai is StopIteration or bi is StopIteration: break yield ai, bi def reversed(iterable): a = list(iterable) a.reverse() return a def sorted(iterable, key=None, reverse=False): a = list(iterable) a.sort(key=key, reverse=reverse) return a ##### str ##### def __format_string(self: str, *args, **kwargs) -> str: def tokenizeString(s: str): tokens = [] L, R = 0,0 mode = None curArg = 0 # lookingForKword = False while(R