Ваша задача сегодня - применить волну к массиву чисел. Волна выглядит так: [1, 0, -1, 0, 1, 0, -1, 0, 1...]
применение ее к данному массиву означает сложение первых элементов, вторых элементов и т. Д.
Точнее:
Ваша программа или функция получит массив целых чисел. Он должен печатать или возвращать массив одинакового размера с 1
добавлением 1-го, 5-го, 9-го и т. Д. Элемента исходного массива, -1
добавлением 3-го, 7-го, 11-го и т. Д. Элемента исходного массива и остальных элементов. следует оставить нетронутым
Входной массив гарантированно имеет хотя бы один элемент.
Тестовые случаи:
Input | Output
[0] | [1]
[-1] | [0]
[-4, 3, 0, 1, 7, 9, 8, -2, 11, -88] | [-3, 3, -1, 1, 8, 9, 7, -2, 12, -88]
[0, 0, 0, 0, 0] | [1 ,0 ,-1 ,0 ,1]
[1, 1] | [2, 1]
Это код-гольф , самый короткий код выигрывает!
Ответы:
Желе , 5 байт
Попробуйте онлайн!
Как это работает
источник
1, 2, 3 ...
или1, 0, -1, 0 ...
?LOGO , 18 байт
Нет "Попробуй онлайн!" ссылка, потому что все онлайн переводчик LOGO не поддерживает список шаблонов.
Это список шаблонов (эквивалент лямбда-функции в других языках).
Использование:
(
invoke
вызывает функцию,pr
печатает результат)отпечатки
[-3 3 -1 1 8 9 7 -2 12 -88]
.Объяснение (уже довольно понятно):
источник
Haskell , 26 байтов
Попробуйте онлайн! (запускает все тестовые случаи)
Объяснение:
источник
JavaScript (ES6), 28 байт
Расчет идет так:
Последний бит использует тот факт, что в JS отрицательное число при модуляции сохранит свой отрицательный знак (то есть
-5 % 3 -> -2
вместо того,1
что было бы в Python).источник
Mathematica,
262322 байтаПопробуйте онлайн! (Mathics)
Примечание. Ссылка TIO предназначена для 23-байтовой версии, 22-байтовая версия не совместима с Mathics.
источник
Python 2 , 40 байт
Попробуйте онлайн!
источник
MATL ,
118 байтПопробуйте это в MATL Online!
объяснение
источник
+
в объяснениеЖеле , 16 байт
Попробуйте онлайн!
хе, я уверен, что это слишком долго
редактировать
Я знаю, что 5-байтовое решение возможно, но мой Wi-Fi, кажется, начинает отключать меня, поэтому я буду играть в гольф завтра. Если кто-то опубликует короткое решение Jelly прежде, чем я смогу сыграть в эту игру, это нормально для меня; Я просто оставлю это здесь для справки о
том, насколько я плох в Jelly LOL,еще один способ сделать это. Я имею в виду, я мог бы просто посмотреть на ссылку, которую Феникс разместил в комментариях, но, поскольку я все еще учусь, я не хочу смотреть на решение, пока сам не выясню. Это может стоить мне репутации, но обучение - вот для чего я здесь :)))источник
R ,
2924 байтаПопробуйте онлайн!
источник
Python 2 ,
5042 байтаБлагодаря @Sisyphus сэкономлено 8 байт!
Попробуйте онлайн!
53 байта
Попробуйте онлайн!
источник
lambda l:map(sum,zip(l,[1,0,-1,0]*len(l)))
для Python 2Haskell , 26 байтов
@Mego опередил меня с этим решением
Попробуйте онлайн!
Это то, в чем Хаскелл хорош. Это объявляет бессмысленную функцию, которая упаковывает ввод бесконечным списком.
Haskell , 56 байт
Вот решение, которое использует комплексные числа. Не очень конкурентоспособный из-за импорта, но тем не менее довольно крутой.
Попробуйте онлайн!
источник
Mathematica, 19 байт
объяснение
Примечание:
i=1
появляется вне функции, что хорошо для этого мета-консенсуса .источник
i
имеет значение, отличное от 1)J, 12 байт
Попробуйте онлайн!
Поскольку оператор формы J
$
заполняет циклически, когда мы формируем его по длине#
ввода, он делает именно то, что нам нужно, и мы можем просто добавить его к входу]
источник
C ++,
93858363 байта-8 байт, благодаря этому ответу я обнаружил, что лямбда-параметры могут быть,
auto
и вы можете передать с правильным параметром, он будет работать-2 байта благодаря Nevay
-2 байта благодаря Zacharý
Я удалил
vector
включить. Вам нужно будет передать в качестве аргумента ва-контейнер, соответствующий следующим условиям:size
без аргументовSTL контейнеры , которые соблюдают следующие условия являются
array
,vector
,string
,map
,unordered_map
, и , возможно , другиеЕсли вывод путем изменения аргументов аргументов не разрешен, то:
C ++,
112110 байтисточник
j%4
чтобы сохранить 2 байта.j%4
.Пари / ГП , 30 байт
Попробуйте онлайн!
источник
Dyalog APL, 13 байт
Попробуйте онлайн!
Как?
1 0 ¯1 0
- массив [1, 0, -1, 0]⍴⍨≢
- изменить длину входного сигнала, циклически⊢+
- векторизованная сумма с входомисточник
Perl 6 , 28 байт
Попробуйте онлайн!
1+0i, * × i ... *
создает бесконечный список чисел,1, i, -1, -i
повторяемых в цикле. Эти числа упаковываются с помощью добавления (Z+
) и ввода ($_
), а затем извлекаются действительные компоненты полученных комплексных чисел (».re
).источник
D, 56 байт
Попробуйте онлайн!
Это порт ответа C ++ от HatsuPointerKun , так что не забывайте о них!
источник
Japt ,
1110 байтИспользует преимущества переноса индекса Japt.
Попробуй это
объяснение
Неявный ввод массива
U
.Карта над массивом.
К текущему элементу добавить ...
Элемент в текущем индексе (
E
) ...В массиве
[1,0,-1,0]
.источник
На самом деле , 11 байтов
Попробуйте онлайн! (запускает все тестовые случаи)
Объяснение:
источник
Pyth , 11 байт
Попробуйте онлайн!
источник
.e+b@[1Z_1Z
ss
сe
на -1..e+be^.j)k
казалось, не работает, когда я попробовал это.CJam , 15 байтов
Попробуйте онлайн!
источник
Math.JS , 34 байта
Разъяснения
Попробуйте онлайн!
источник
8-е ,
96-63 байтаКод
Этот код оставляет результирующий массив на TOS
Использование и примеры
объяснение
Мы используем cos (x), чтобы получить правильную последовательность [1,0, -1,0]. Индекс каждого элемента массива умножается на 90 градусов, а затем передается функции cos (), чтобы получить желаемый «волновой фактор», который будет добавлен к соответствующему элементу.
источник
C # (.NET Core) , 50 байтов
Попробуйте онлайн!
Использует простую лямбду. Изменяет исходный массив и возвращает вывод по ссылке.
источник
05AB1E , 16 байтов
Попробуйте онлайн!
3L2.SR0¸«
самая короткая вещь, о которой я могу думатьsin(x % 4)
в 05AB1E.источник
Рубин , 38 байт
Попробуйте онлайн!
источник