"Znajdź minimalną wartość spośród wszystkich przekazanych argumentów o porównywalnych typach"

def min1(*args):
    res = args[0]
    for arg in args[1:]:
        if arg < res:
            res = arg
    return res

def min2(first, *rest):
    for arg in rest:
        if arg < first:
            first = arg
    return first

def min3(*args):
    tmp = list(args)
    tmp.sort()
    return tmp[0]

def min4(*args):
    return sorted(args)[0]

for func in (min1, min2, min3, min4):           # Przetestowanie wszystkich 4 funkcji
    print(func.__name__ + '...')
    print(func(3, 4.0, 1, 2))                   # Mieszane typy numeryczne
    print(func('bb', 'aa'))                     # Łańcuchy znaków — punkty kodowe
    print(func([2, 2], [1, 1], [3, 3]))         # Listy — rekurencja
    print(func(*'hackować'))                    # Rozpakowane znaki

