Smoothing the Weather

Problem #57

Tags: arithmetic loops floating-point

Who solved this?

Back to English version

smooth line chart example

Маленький Мерлин хочет стать метеорологом. Он измеряет температуру воздуха каждый час, так что через несколько дней получается длинная последовательность значений.

Однако инструменты его несовершенны и измерения не вполне точны - они "скачут" вверх и вниз на несколько градусов от реальных значений.

Обнаружив это, Мерлин решил "сгладить" данные. Чтобы достичь этого, каждое значение нужно заменить средним от трех - его самого и двух соседних (предыдущего и следующего). Например, если у нас последовательность из 5 значений:

3 5 6 4 5

То второе (5) должно быть заменено на (3 + 5 + 6) / 3 = 4.66666666667,
а третье (6) заменяется на (5 + 6 + 4) / 3 = 5,
четвертое же (4) заменим на (6 + 4 + 5) / 3 = 5.
Договоримся также что первое и последнее значения мы не меняем вовсе.

На картинке выше синяя линия изображает необработанные результаты измерений, а красная - данные после сглаживания.

От нас требуется написать программу которая поможет малышу Мерлину с его хитроумным алгоритмом цифровой обработки сигнала.

Входные данные указывают длину последовательности в первой строке.
Вторая строка содержит результаты измерений (значения последовательности).
Ответ должен содержать "сглаженную" последовательность. Значения нужно сосчитать с точностью 1e-7 или лучше.

Пример:

входные данные:
7
32.6 31.2 35.2 37.4 44.9 42.1 44.1

ответ:
32.6 33 34.6 39.1666666667 41.4666666667 43.7 44.1
You need to login to get test data and submit solution.