Учитывая целое число n > 9
, для каждой возможной вставки между цифрами в этом целом числе вставьте дополнение +
и оцените. Затем возьмите оригинальное число по модулю этих результатов. Выведите общую сумму этих операций.
Пример с n = 47852
:
47852 % (4785+2) = 4769
47852 % (478+52) = 152
47852 % (47+852) = 205
47852 % (4+7852) = 716
-----
5842
вход
Один положительное целое число в любом удобном формате , n > 9
.
Выход
Одиночный целочисленный вывод, следуя описанной выше методике построения.
правила
- Вам не нужно беспокоиться о вводе, превышающем тип языка по умолчанию.
- Либо полная программа или функция приемлемы. Если функция, вы можете вернуть вывод, а не распечатать его.
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
Примеры
47852 -> 5842
13 -> 1
111 -> 6
12345 -> 2097
54321 -> 8331
3729105472 -> 505598476
code-golf
math
number-theory
AdmBorkBork
источник
источник
D.s¨s.p¨R+¹s%O
не видя этого; PJavaScript,
4347 байтПринимает ввод в виде строки.
Редактировать:
+4 байта : ведущие нули в JavaScript преобразуют число в восьмеричное):
источник
(+'$&$''+$`)
?$`
пусто, и она будет выдавать ошибку, пытаясь вычислить(13+)
(как пример).Брахилог , 20 байт
Попробуйте онлайн!
объяснение
Это реализует приведенную формулу. Единственное, с чем нам следует быть осторожным, это когда a
0
находится в середине ввода: в этом случае Brachylog становится довольно странным, например, он не примет, что список целых чисел, начинающихся с a,0
может быть объединен в целое число ( что потребовало бы игнорирования ведущего0
- это в основном запрограммировано таким образом, чтобы избежать бесконечных циклов). Поэтому, чтобы обойти эту проблему, мы преобразуем входные данные в строку, а затем преобразовываем обратно все разделенные входные данные в целые числа.источник
ES6 (Javascript),
4240 байтправок:
Golfed
Тест
источник
m<2**31
то можете начать сx=1
сохранения байта.Python 2, 45 байт
Использует арифметику, а не строки для разделения ввода
n
на частиn/c
иn%c
, которыйc
повторяется через степени 10.источник
Желе , 12 байт
TryItOnline!
Как?
источник
Perl
35 3227 байтВключает +3 для
-p
Сохранено 8 байт благодаря Dada
источник
C 77 + 4 = 81 байт
golfed
Ungolfed
источник
r=0
, чтобы при повторном вызове функции результат был правильным. Это где-то в Meta, если вы используете глобальные переменные, вам приходится иметь дело с побочными эффектами вызова функции более одного раза.r
global, но внутри функции, как выражение, которое вы можете сказатьr=0;
, см. Мой ответ, например.Python 2,
686468 байт-4 байта благодаря атласологу
* Ввод - это строка
источник
lambda n:sum(int(n)%eval(n[:i]+'+'+n[i:])for i in range(len(n)))
8
или9
после него, и дает неправильные ответы для других (как в последнем тестовом примере). Числа, начинающиеся с нуля, являются восьмеричными. repl.it/EmMmC 59 байт
t
есть10,100,1000,...
и представляет разрез в большом числе.n/t
это правая часть иn%t
левая часть. Еслиt
больше, чем число, оно закончено.Ungolfed и использование:
источник
Сетчатка , 38 байт
Число байтов предполагает кодировку ISO 8859-1.
Не совсем эффективно ...
Попробуйте онлайн! (Первая строка включает набор тестов, разделенных переводом строки.)
объяснение
Между каждой парой символов мы вставляем запятую, все перед совпадением, точку с запятой, весь ввод, перевод строки и все после совпадения. Для ввода
12345
это дает нам:Т.е. каждое возможное расщепление входа вместе с парой ввода. Нам не нужна эта последняя строка, хотя бы так:
Мы отбрасываем это.
Это заменяет каждое число, а также запятую своим унарным представлением. Поскольку запятая не является числом, она рассматривается как ноль и просто удаляется. Это добавляет две части в каждом разделении.
Это вычисляет модуль, удаляя все копии первого числа от второго числа.
Вот и все, мы просто считаем, сколько
1
s осталось в строке, и выводим это как результат.источник
Pyth, 14 байт
Программа, которая принимает ввод целого числа и печатает результат.
Тестирование
Как это работает
источник
Haskell, 62 байта
Определяет функцию
f
. Посмотрите, как пройти все тестовые случаи.источник
Perl 6 , 33 байта
Expanded:
источник
Mathematica, 75 байтов
При этом используется сопоставление с образцом в списке цифр для извлечения всех их разделов на две части. Каждый такой раздел в
a
иb
затем заменяетсяПримечательным здесь является то, что суммы списков неравной длины остаются неоцененными, поэтому, например, если
a
есть1,2
иb
есть,3,4,5
мы сначала заменим это на{1,2} + {3,4,5} + {}
. Последний член предназначен для того, чтобы гарантировать, что он все еще остается неоцененным, когда мы равномерно разделяем четное число цифр. ТеперьMap
операция в Mathematica достаточно обобщена, чтобы работать с любыми выражениями, а не только со списками. Поэтому, если мы сопоставимFromDigits
эту сумму, она превратит каждый из этих списков обратно в число. В этот момент выражение представляет собой сумму целых чисел, которая теперь оценивается. Это сохраняет байт по сравнению с более традиционным решением,Tr[FromDigits/@{{a},{b}}]
которое сначала преобразует два списка, а затем суммирует результат.источник
На самом деле ,
1615 байтПредложения по игре в гольф приветствуются! Попробуйте онлайн!
Изменить: -1 байт благодаря Тил Пеликан.
Ungolfing
источник
╤╜d+╜%
MΣ)Рубин, 64 байта
Принимает ввод в виде строки
источник
0
восьмеричного, что означает, что это не удалось в последнем тестовом примере. Вот 78-байтовое решение для решения этой проблемы.Befunge,
10196 байтПопробуйте онлайн!
объяснение
источник
APL, 29 байт
⎕IO
должно быть1
. Объяснение (я не очень хорошо объяснить, какие imporvements к этому будут очень приветствуется):источник
C #, 67 байт
Полная программа с ungolfed, объясненный метод и контрольные примеры:
источник
Атташе , 48 байт
Попробуйте онлайн!
объяснение
источник
Clojure,
9181 байтРедактировать: это короче, так как объявляет анонимную функцию
(fn[v](->> ...))
и не использует->>
макрос, хотя ее было проще читать и вызывать таким образом.Оригинал:
Создает последовательность из 1, 10, 100, ... и принимает первые 10 элементов (при условии, что входные значения меньше 10 ^ 11), сопоставляется с модулями, как указано в спецификации, и вычисляет сумму. Длинные названия функций делают это решение довольно длинным, но, по крайней мере, даже версия для гольфа должна быть довольно легкой для понимания.
Сначала я попробовал жонглировать струнами, но для этого потребовалось множество шаблонов.
источник
Ракетка 134 байта
Ungolfed:
Тестирование:
Выход:
источник
R , 50 байтов
Попробуйте онлайн!
источник
SNOBOL4 (CSNOBOL4) , 92 байта
Попробуйте онлайн!
источник
Рубин 45 байтов
Это действительно аккуратное решение. Это технически правильно, но супер неэффективно. Было бы гораздо эффективнее написать q.to_s.size.times {...}. Мы используем q.times, потому что он сохраняет символы, и дополнительное количество раз, когда он проходит через proc, выражение просто обнуляется.
источник
->q{(0..q).reduce{|s,x|p=10**x;s+q%(q/p+q%p)}}
PHP , 60 байт
Попробуйте онлайн!
источник
Java 8,
12766 байт-61 байт пути создания порта @adrianmp «s C # ответа .
Попробуй это здесь.
источник
Пари / ГП , 42 байта
Попробуйте онлайн!
источник
Japt ,
1110 байтПопытайся
объяснение
источник