__author__ = 'Крымов Иван'
# Задание-1:
# Напишите функцию, возвращающую ряд Фибоначчи с n-элемента до m-элемента.
# Первыми элементами ряда считать цифры 1 1

def fibonacci(n, m):
    pass

    a, b = 1, 1
    f_list = [1, ]

    for i in range(m):
        a, b = b, a + b
        f_list.append(a)

    return f_list[n - 1:m]


print(fibonacci(1, 6))


# Задача-2:
# Напишите функцию, сортирующую принимаемый список по возрастанию.
# Для сортировки используйте любой алгоритм (например пузырьковый).
# Для решения данной задачи нельзя использовать встроенную функцию и метод sort()


def sort_to_max(origin_list):
    pass

    sorted_list = []
    for y in origin_list:
        sorted_list.append(min(origin_list))
        origin_list.remove(min(origin_list))
    return sorted_list


print(sort_to_max([2, 10, -12, 2.5, 20, -11, 4, 4, 0]))


# Задача-3:
# Напишите собственную реализацию стандартной функции filter.
# Разумеется, внутри нельзя использовать саму функцию filter.

def filter_list(fucnt, param_b):
    end_list = list()
    for x in param_b:
        if fucnt(x) == True:
            end_list.append(x)
        else:
            continue
    return end_list


print((filter_list((lambda x: x > 5), param_b=[1, 100, 500, 7, 8, 11, 2, 3, 4, 5, 6, 7, 8, 9, 10])))

# Задача-4:
# Даны четыре точки А1(х1, у1), А2(x2 ,у2), А3(x3 , у3), А4(х4, у4).
# Определить, будут ли они вершинами параллелограмма.

A = (2, 4)
B = (-3, 7)
C = (-6, 6)
D = (-1, 3)
if ((A[0] + C[0]) / 2 == (B[0] + D[0]) / 2) & ((A[1] + C[1]) / 2 == (B[1] + D[1]) / 2):
    print("Да, эти точки являются вершинами параллелограмма")
else:
    print("НЕТ, эти точки НЕ являются вершинами параллелограмма")
