Решение на втора задача
-
Ето примерно решение:
def reduce(func, seq, init = None):
if init is None and seq:
init, *seq = seq
for x in seq:
init = func(init, x)
return init
def groupby(func, seq):
groups = {}
for item in seq:
groups.setdefault(func(item), []).append(item)
return groups
def construct(functions, *args):
return [f(*args) for f in functions]
def curry(func, *args, **kwargs):
def curried(*newargs, **newkwargs):
merged_kwargs = kwargs.copy()
merged_kwargs.update(newkwargs)
return func(*(args + newargs), **merged_kwargs)
return curried
def compose(func, *functions):
return lambda *args, **kwargs: reduce(lambda value, f: f(value), functions, func(*args, **kwargs))06.04.2009