Обратные дельты массива
Продолжение Обратных Дельт Массива
Ваша задача - взять массив 32-битных целых чисел со знаком, перекомпилировать его с обратными дельтами.
пример
Список,
18 19 17 20 16
имеет дельты:
1 -2 3 -4
который при обращении дает:
-4 3 -2 1
затем при перекомпиляции, используя выход:
18 14 17 15 16
который должен быть вашим возвращаемым значением.
Перекомпиляция состоит из взятия C
, которое является первым значением массива. В этом случае 18
и применяя дельты к нему по порядку. Так 18 + -4
дает 14
, 14 + 3
дает 17
и так далее.
Ввод, вывод
Вам будет предоставлен список / массив / таблица / кортеж / стек / и т. Д. целых чисел со знаком в качестве ввода через любой стандартный метод ввода.
Вы должны вывести измененные данные еще раз в любой приемлемой форме, следуя описанному выше методу обращения дельты.
Вы получите N входов, 0 < N < 10
где каждое число попадает в диапазон-1000 < X < 1000
Тестовые случаи
1 2 3 4 5 -> 1 2 3 4 5
18 19 17 20 16 -> 18 14 17 15 16
5 9 1 3 8 7 8 -> 5 6 5 10 12 4 8
6 5 4 1 2 3 -> 6 7 8 5 4 3
Заметки
- Как указано выше, вы всегда будете получать по крайней мере 1 вход, и не более 9.
- Первый и последний номер вашего вывода всегда будет совпадать с номером ввода.
- Только стандартные входные данные принимаются
- Применяются стандартные лазейки
- Это код-гольф , поэтому побеждает самый низкий счетчик байтов!
- Повеселись!
И победитель...
Деннис! Кто сначала занял первое место, а затем избил себя более коротким решением, отдав себе и первое, и второе место!
Почетное упоминание ais523 с их Jelly, что если бы не Денис, забравшийся прямо перед ними, занял бы второе место.
Ответы:
Желе , 5 байт
При этом используется алгоритм из Джулии ответа Глен Выходов .
Попробуйте онлайн!
Как это работает
источник
Желе , 6 байт
Попробуйте онлайн!
Как это работает
источник
Ṛ
меня естьU
). Я не знаю, делает ли это их достаточно разными, чтобы не рассматривать дубликаты.U
векторизует, покаṚ
нет, но их поведение для плоских массивов идентично.Ḣ
как 0x1e22 иṚ
как 0x1e5a, каждый из которых, следовательно, требует 3 байта.Юлия, 24 байта
Это «умный» способ решения проблемы. Отрицательная обратная сторона массива имеет обратные «дельты», и тогда вам просто нужно исправить тот факт, что он начинается / заканчивается в неправильных местах.
источник
Snowman 1.0.2, 72 байта
Попробуйте онлайн!
Это подпрограмма, которая принимает входные данные и выводит их в текущий permavar.
источник
JavaScript (ES6),
4537 байтПорт @ JHM's Mathematica ответа. (Я уверен, что мог бы получить это сам, но не в это время ночи.) Редактирование: Сохранено 8 байт благодаря @ edc65.
источник
[...
и]
?a
, что будет использовано позже в программеa=>a.reverse(z=a[0]).map(e=>z+a[0]-e)
z=a[0]
, но я забыл удалить[...]
и(,i,b)
.Mathematica, 23 байта
Безымянная функция. Результат просто: реверс ((первый элемент) + (последний элемент) - (каждый элемент)).
источник
Python 2,
96745444 байтаВходные данные приведены в виде массива в квадратных скобках. Вывод в том же формате.
Спасибо @Kade за сохранение
2242 байт с помощью гораздо более простого метода, чем я делал раньше!Спасибо @ Sherlock9 за сохранение 10 байтов за счет исключения счетчика индексов из списка!
Отлично, теперь, если я буду больше играть в гольф, у меня возникнет проблема: «Вычеркнуто 44 - все еще 44» ; _;
источник
lambda l:[l[0]+l[-1]-l[i]for i in range(len(l))][::-1]
54 байтов? :) (Кредиты Глену О. для расчета)l[i]for i in range(len(l))
вы можете использоватьj for j in l
для сохранения 14 байтов.05AB1E , 8 байтов
Попробуйте онлайн!
Перевод моего ответа MATL, второй подход.
источник
¬s¥Rvy)}
R,
3730 байтИзменить: Теперь, используя подход в ответ Джулии Глен О
Старый:
Считывает ввод, вычисляет дельты, объединяет с первым элементом и вычисляет накопленную сумму.
источник
MATL , 8 байт
Попробуйте онлайн!
Это прямое применение определения. Рассмотрим ввод
[18 19 17 20 16]
в качестве примера.Другой подход, одинаковое количество байтов:
Попробуйте это все!
Обращенный и отрицательный массив плюс первая и последняя записи исходного массива.
источник
Japt, 8 байт
Запустите его онлайн
источник
Pyth - 10 байт
Тестовый пакет .
источник
아희 (Aheui) , 3 * 21 символа + 2 "\ n" = 65 байт
Предполагается ввод в стек stack. Вывод будет сохранен в стеке 안.
Если вы хотите попробовать этот код:
В конце первой строки этого кода добавьте
벙
длину символа (n) -х (например, если входное значение равно 7 целым, вставьте его 7 раз). Для каждого приглашения введите одно целое число:Попробуй это здесь! (скопируйте и вставьте код)
пример
Для
1, 2, 3, 4, 5
:а затем введите
1
,2
,3
,4
, и5
(будет 5 подсказок).Альтернативная версия (65 байт)
источник
65 bytes in UTF-8
или что-то?C # 42 байта
Берет
int[]
и возвращаетIEnumerable<int>
.(На самом деле это просто перенесенная версия версии JHM ..)
источник
TSQL, 200 байт
Переменная таблицы, используемая в качестве входных данных
Попробуйте это
источник
PHP,
605652 байта-4 байта благодаря @ user59178
работает с аргументами командной строки, использует подчеркивание в качестве разделителя. Бежать с
php -r '<code>' <space separated numbers>
источник
$n
переменную управления? Я попробовал такую версию, и она была на 4 байта короче и, похоже, работала.Perl 6 ,
48 3330 байтПопытайся
Expanded:
Это
*-1
также лямбда-выражение типа WhwhatCode, где*
это единственный позиционный параметр.источник
[\+]
из первого примера, это сокращение треугольника[\+] 3,-1,1,-5
→(3,2,3,-2)
и[\,] 3,-1,1,-5
→((3,), (3,-1), (3,-1,1), (3,-1,1,-5))
Юлия 0,4 , 32 байта
Попробуйте онлайн!
источник
BASH, 71 байт
источник
C ++ 14, 103 байта
Как безымянного лямбда, требуя его вход , чтобы иметь
rbegin
,rend
,back
и ,push_back
как контейнерыvector
,deque
илиlist
.Используя подход Джулии от Глена О
Ungolfed и использование:
источник
Haskell, 33 байта
Использует ту же логику, что и JHM:
Вполне читабельно, а также.
источник
(!!0)
дляhead
и используя(<$>)
дляmap
: Попробуйте онлайн!Выпуклый , 10 байт
Попробуйте онлайн!
источник
Clojure, 101 байт
В значительной степени следует за описанием:
источник
Java 7, 96 байт
Объяснение:
Тестовый код:
Попробуй это здесь.
Выход:
источник
APL (Dyalog Unicode) , 11 байтов SBCS
Функция анонимного молчаливого префикса.
Попробуйте онлайн!
+\
накопленная сумма⊃
первый элемент аргумента,
а затем∘
путем⌽
разворота2-⍨/
попарная разница⊢
Аргументисточник