Я деякий час прокручувався цей сайт, але нещодавно я дуже зацікавився справді випробувати деякі проблеми. Я мав намір спробувати свої сили в деяких існуючих темах коду-гольфу, але вчора не мав доступу до Інтернету, а тим часом я придумав власне завдання.
Ваше завдання - створити програму або функцію, яка займає масив Floats a
і ціле число n
, а потім встановлює кожне значення в a
середнє значення двох поруч, n
разів. При багаторазовому використанні зі збільшеннями значень n
це створює хвилеподібний рух:
Особливості:
- Якщо в ньому є лише один елемент
a
, або якщоn
це 0 або менше, програма повинна повернути початковий масив. - Входи та виходи можуть бути у будь-якому бажаному вами форматі, якщо вони помітно розділені.
Для кожного кроку:
- Перший пункт у
a
повинен стати середнім для себе, а наступний. - Останній пункт у
a
повинен стати середнім для себе та попереднім. - Будь-який інший елемент у
a
повинен стати середнім показником попереднього та наступного. - Переконайтеся, що ви обчислюєте масив попереднього кроку, а не поточний!
Тестові приклади: ПРИМІТКА. Ваші входи / виходи не повинні бути у такому форматі!
[0, 0, 1, 0, 0], 1 -> [0, 0.5, 0, 0.5, 0]
[0, 0, 1, 0, 0], 2 -> [0.25, 0, 0.5, 0, 0.25]
[0, 0, 1, 0, 0], 0 -> [0, 0, 1, 0, 0]
[0, 0, 1, 0, 0], -39 -> [0, 0, 1, 0, 0]
[0, 16, 32, 16, 0], 1 -> [8, 16, 16, 16, 8]
[0, 1, 2, 3, 4, 5], 1 -> [0.5, 1, 2, 3, 4, 4.5]
[0, 64], 1 -> [32, 32]
[0], 482 -> [0]
[32, 32, 32, 16, 64, 16, 32, 32, 32], 4 -> [33, 27, 40, 22, 44, 22, 40, 27, 33]
Це код-гольф , тому найкоротша відповідь у байтах виграє. Переможець буде обраний через тиждень (1 серпня). Удачі!
Редагувати: Вітаю переможця @issacg з величезними 18 байтами!
n
має бути 4, а не 5.
n
не поставлених іa
не поставлених справ - вони насправді не дуже багато додають.