Просто альтернативный взгляд на это. Вот код Mathematica:
With[{n = Length@# - 1}, Range[-n, n, 2].Sort[#]] &
n
= на единицу меньше длины списка
Range[-n, n, 2]
создает список с номерами от -n
до n
с шагом 2
, например, Range[-4, 4, 2]
= {-4, -2, 0, 2, 4}
.
является векторным точечным произведением, например, {a, b, c} . {x, y, z}
= a x + b y + c z
Sort
просто сортировка.
Итак, для вашего примера, у нас есть: {-3, -1, 1, 3} . {2, 3, 5, 7}
= 17
Вот график зависимости длины списка от времени: