Рассмотрим массив натуральных чисел:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, ...
Затем объедините их:
1234567891011121314151617181920212223242526...
А затем разбить их на куски переменной длины, каждая из которых равна N- му положительному целому числу:
[1][23][456][7891][01112][131415][1617181][92021222][324252627][2829303132] ...
---------------------------------------------------------------------------
1 2 3 4 5 6 7 8 9 10 ...
задача
Учитывая целое число N (положительное для 1-индексации или неотрицательное для 0-индексации), ваша задача состоит в том, чтобы вывести сумму дельт цифр в N- ом фрагменте (разности между последовательными цифрами).
Применяются запрещенные по умолчанию лазейки .
Применяются стандартные методы ввода и вывода .
Вы можете выбрать либо 0 , либо 1-индексирование для N .
Последовательность должна начинаться с 1 .
Это код-гольф , выигрывает самый короткий код в байтах.
Примеры и тесты
1-индексированные контрольные примеры. Если вы хотите 0-индексированные, просто уменьшите N.
N, Chunk, Deltas, Sum
1 -> 1 -> [] -> 0
2 -> 23 -> [1] -> 1
3 -> 456 -> [1, 1] -> 2
4 -> 7891 -> [1, 1, -8] -> -6
5 -> 01112 -> [1, 0, 0,1] -> 2
6 -> 131415 -> [2, -2, 3, -3, 4] -> 4
7 -> 1617181 -> [5, -5, 6, -6, 7, -7] -> 0
8 -> 92021222 -> [-7, -2, 2, -1, 1, 0, 0] -> -7
9 -> 324252627 -> [-1, 2, -2, 3, -3, 4, -4, 5] -> 4
10 -> 2829303132 -> [6, -6, 7, -6, -3, 3, -2, 2, -1] -> 0
Головоломка 2 на CodeGolf-Hackathon (я там тоже автор, так что мне разрешено перепечатывать). Связанные, Вдохновение . Относящиеся .
источник
Ответы:
JavaScript (ES6),
54535150 байтСохранено 1 байт благодаря @tsh
0 индексированные.
Контрольные примеры
Показать фрагмент кода
источник
k=>-(n=1,g=s=>s[x=k*-~k/2]-s[x+k]-n||g(s+n++))""-n
APL (Dyalog) , 32 байта
Попробуйте онлайн!
Как?
+/⍳⍵
- сумма1
доn
⍳
- сделать диапазон этого' '~⍨⍕
- в строку без пробелов(+/⍳⍵-1)↓
- сбросить первую (сумму1
доn-1
) символов⍵↑
- сохранить следующиеn
символы⍎¨
- превратить каждый символ в целое число2-⍨/
- список различий (обратное вычитание для каждых 2 пунктов)+/
- Подводя итог.источник
Шелуха , 9 байт
Попробуйте онлайн!
Мое решение хакатона.
Объяснение:
источник
Haskell ,
6160 байтПопробуйте онлайн!
Объяснение:
Сумма дельт списка равна разнице между последним и первым элементом.
Последний элемент (нуль-индексированный) является
t
,triangle(n)-1 = sum[2..n]
. Первый элемент, то естьt-n+1
в списке естьn
элементы.источник
Python 2 , 80 байт
Попробуйте онлайн!
2**n
Конечно, это излишне, но это на байт короче, чем что-то вродеn*n+1
.источник
Mathematica, 71 байт
Попробуйте онлайн!
источник
JavaScript (ES6),
605753 байта1-индексироваться. Предыдущая 60-байтовая нерекурсивная версия:
источник
05AB1E , 8 байтов
0 индексированные.
Попробуйте онлайн!
источник
Python 2 , 87 байт
Попробуйте онлайн!
источник
Python 2 , 104 байта
Попробуйте онлайн!
источник
Perl 6 ,
5855 байтПроверь это
Проверь это
Expanded:
источник
PHP ,
163147 байтПопробуйте онлайн!
Моя первая попытка игры в гольф кода ... я чувствую, что это может быть короче
Редактировать: сохранено 16 байтов путем удаления нескольких экземпляров
источник
Perl 5 , 79 + 1 (
-p
) = 80 байтПопробуйте онлайн!
источник
Pyth ,
2927 байтСохранено 2 байта благодаря @ Mr.Xcoder.
Попробуйте онлайн!
источник
Желе , 14 байт
Попробуйте онлайн!
объяснение
Первоначально я начал с определения диапазона (n (n + 1) / 2), но, поскольку перед концом списка у вас могут быть дополнительные цифры, я изменил его на диапазон (n ^ 2). В любом случае у вас есть дополнительные цифры после 1-9.
источник
+²HRDFṫЀ³ḶḣЀRS€‘¤ṪðḣIS
оригинальная (успешная, но долгая) попытка