Тип последовательности

Напишите функцию, которая будет определять, является ли переданная ей последовательность линейной («Linear»), квадратичной («Quadratic») или кубической («Cubic»).

Инпутом будет список чисел произвольной длины. Числа в списке будут представлять собой одну из указанных последовательностей.

Функция должна возвращать строки «Linear», «Quadratic» или «Cubic» в соответствии с тем, какая последовательность передана.

Примеры

seq_level(1, 2, 3, 4, 5) ➞ "Linear"
seq_level(3, 6, 10, 15, 21) ➞ "Quadratic"
seq_level(4, 14, 40, 88, 164) ➞ "Cubic"

Варианты решения

def seq_level(lst):
    seq = lambda x: [b - a for a, b in zip(x, x[1:])]
    is_linear = lambda x: len(set(seq(x))) == 1

    return 'Linear' if is_linear(lst) \
        else 'Quadratic' if is_linear(seq(lst)) \
        else 'Cubic'
def seq_level(lst):
    d, level = {1: 'Linear', 2: 'Quadratic', 3: 'Cubic'}, 0
    while len(set(lst)) != 1:
        lst = [a - b for a, b in zip(lst, lst[1:])]
        level += 1
    return d[level]
def seq_level(lst):
    dif1 = [j - i for i, j in zip(lst, lst[1:])]
    dif2 = [j - i for i, j in zip(dif1, dif1[1:])]
    dif3 = [j - i for i, j in zip(dif2, dif2[1:])]

    if not sum(dif2): return 'Linear'
    if not sum(dif3): return 'Quadratic'
    return 'Cubic'