Кажется, что любая простая модификация дельт с использованием непротиворечивой функции почти всегда может быть сделана другим, более коротким способом , Денисом . Таким образом, единственное решение, которое я могу себе представить, чтобы сделать это сложнее, это ввести какую-то противоречивую функцию.
Сортировка.
Ваша задача - взять массив целых чисел, отсортировать их дельты и перекомпилировать, чтобы получить новый массив целых чисел.
НАПРИМЕР.
Для ввода:
1 5 -3 2 9
Получите следующие Deltas:
4 -8 5 7
Затем сортируйте эти дельты, получая:
-8 4 5 7
И повторно применить их, что дает:
1 -7 -3 2 9
Ввод, вывод
Вам будет предоставлен список / массив / таблица / кортеж / стек / и т. Д. целых чисел со знаком в качестве ввода через любой стандартный метод ввода.
Вы должны вывести измененные данные еще раз в любой приемлемой форме, следуя вышеописанному методу дельта-сортировки.
Вы получите N входов, 0 < N < 10
где каждое число попадает в диапазон-1000 < X < 1000
Тестовые случаи
1 5 -3 2 9 -> 1 -7 -3 2 9
-5 -1 -6 5 8 -> -5 -10 -7 -3 8
-8 1 -7 1 1 -> -8 -16 -16 -8 1
8 -9 3 0 -2 -> 8 -9 -12 -14 -2
-5 -2 -5 5 0 -> -5 -10 -13 -10 0
-1 9 -1 -7 9 -> -1 -11 -17 -7 9
Заметки
- Как указано выше, вы всегда будете получать по крайней мере 1 вход, и не более 9.
- Первый и последний номер вашего вывода всегда будет совпадать с номером ввода.
- Только стандартные входные данные принимаются
- Применяются стандартные лазейки
- Это код-гольф , поэтому побеждает самый низкий счетчик байтов!
- Повеселись!
Ответы:
Желе , 7 байт
Попробуйте онлайн!
Как это работает
источник
MATL , 8 байт
Попробуйте онлайн!
источник
Mathematica, 40 байт
Чистая функция, принимающая список (что угодно) в качестве входных данных и возвращающая список.
FoldList[Plus
начинается с числа (в данном случае#&@@#
это первый элемент ввода) и многократно добавляет элементы списка, требующего поясненияSort@Differences@#
. Это имитирует поведение встроенногоAccumulate
, но первое число должно быть добавлено вручную к списку различий вручную, что увеличивает количество байтов (насколько я могу судить).источник
05AB1E , 9 байт
-4 спасибо Эмигне
Попробуйте онлайн!
источник
¬=s¥{vy+=
Python 2, 92 байта
источник
Haskell, 59 байт
Сломать:
источник
scanl(+)a$sort...
JavaScript (ES6), 68 байт
В JavaScript оказывается, что лучше вычислять обратные дельты массива . Затем они сортируются в порядке убывания и кумулятивно вычитаются из первого элемента.
источник
Python 2 ,
90 байт84 байта
Сохранено 6 байт при использовании лямбды. Благодаря овс!
Попробуйте онлайн!
Сломать код,
Удачного кодирования!
источник
lambda x:[sum(sorted(map(int.__sub__,x[1:],x[:-1]))[:i])+x[0]for i in range(len(x))]
JavaScript (ES6), 93 байта
источник
Python 2 , 97 байт
Попробуйте онлайн!
источник
[p[i+1]-p[i]for i in range(len(p)-1)]
Pyth, 11 байт
Это просто делает очевидную вещь, описанную в заявлении.
Попробуйте онлайн
Предложения по дальнейшей игре в гольф приветствуются.
источник
Юлия 0,5 , 30 байт
Попробуйте онлайн!
источник
PHP, 89 байт
Запустите так:
объяснение
источник
Python 2 с NumPy,
6756 байтПозвольте numpy вычислить дельты, отсортировать их, добавить первый элемент и позволить numpy вычислить кумулятивные суммы. Довольно дешево?
источник
from numpy import*
иn.cumsum
кcumsum
иn.diff
кdiff
Perl 6 , 31 байт
Попробуй
Expanded:
источник
Пакет, 197 байт
sort
не сортирует по численности, поэтому я смещаю все различия на 5000.источник
bash + sort, 102 байта
sh + sort + expr, 106 байт
источник
Clojure, 46 байтов
Однажды я собираюсь создать язык Cljr, который имеет более короткие имена функций, чем Clojure.
источник