Безумный математик владеет обширной коллекцией чисел, и поэтому оставленное им пространство довольно ограничено. Чтобы сэкономить, он должен сложить целые числа, но, к сожалению, он действительно ленив. Ваша задача, если вы хотите помочь ему, - создать функцию / программу, которая складывает данное положительное целое число для нашего числового маньяка.
Как сложить целое число?
Если он делится равномерно на сумму его цифр, разделите его на сумму его цифр. Если он не удовлетворяет этому требованию, возьмите его остаток, разделив его на сумму цифр. Повторяйте процесс, пока не достигнете результата 1
. Сложенное целое число - это количество операций, которые вам пришлось выполнить. Давайте возьмем пример (скажем 1782
):
Получить сумму цифр:
1 + 7 + 8 + 2 = 18
.1782
равномерно делится на18
, так что следующий номер1782 / 18 = 99
.99
не нацело9 + 9 = 18
, поэтому мы берем остаток:99 % 18 = 9
.9
очевидно делится на9
, поэтому мы делим его и получаем1
.
Результат 3
, потому что 3 операции были необходимы для достижения 1
.
Правила и характеристики
Некоторые целые числа могут иметь сумму цифр
1
, такую как10
или100
. Ваша программа не должна обрабатывать такие случаи. Это означает, что вам будет гарантировано, что целое число, данное в качестве входных данных, не будет иметь сумму цифр, равную1
, и никакая операция с данным целым числом не приведет к числу, чья сумма цифр равна1
(за исключением1
самого себя, которое является " мишень "). Например, вы никогда не получите10
или20
как вход.Входное значение будет положительным целым числом выше, чем
1
.Применяются стандартные лазейки .
Вы можете принимать входные данные и предоставлять выходные данные любым стандартным способом .
Тестовые случаи
Вход -> Выход 2 -> 1 5 -> 1 9 -> 1 18 -> 2 72 -> 2 152790 -> 2 152 -> 3 666 -> 3 777 -> 3 2010 -> 3 898786854 -> 4
Вот программа, которая позволяет вам визуализировать процесс и пробовать больше тестовых случаев.
Это код-гольф , поэтому выигрывает самый короткий код на каждом языке (в байтах)!
8987868546
как допустимый ввод, он сломает ваш тестовый инструмент, а также многие (если не все) ответы ...898786854
, а не8987868546
(вы добавили6
в конце)8987868546
не равна 1 ( правило 1 выполнено ) и8987868546
является положительным целым числом, превышающим 1 ( правило 2 выполнено ).Ответы:
05AB1E ,
1312 байтПопробуйте онлайн!
объяснение
источник
Python 2 ,
6357 байт-1 благодаря полностью человеку
-1 благодаря мистеру Xcoder
-4 благодаря reffu
Попробуйте онлайн!
источник
Haskell,
8578 байтСохранено 7 байтов благодаря Брюсу Форте.
Попробуйте онлайн.
источник
divMod
и опускаяwhere
: Попробуйте онлайн!where
. Я буду использовать это в будущем. :)sum[read[d]|d<-show n]
сохраняет байтJavaScript (ES6),
66585149 байтПринимает ввод как целое число. Возвращает
false
для0
или1
и выдает ошибку переполнения, когда встречает любое число, цифры которого складываются до1
.Проверь это
источник
eval(array.join`+`)
?Шелуха , 12 байт
Попробуйте онлайн!
объяснение
источник
C # (.NET Core) , 87 байт
Попробуйте онлайн!
Лямбда-функция, которая принимает и возвращает целое число.
источник
Japt ,
221917 байт-3 байта благодаря @Shaggy.
-2 байта благодаря @ETHproductions
Попробуйте онлайн!
источник
s_¬
это,ì
чтобы сохранить еще два байта :-)Сетчатка , 100 байт
Попробуйте онлайн! Ссылка включает только меньшие контрольные примеры, так как большие занимают слишком много времени.
источник
Mathematica, 73 байта
источник
==0
заменить на<1
?PHP, 68 + 1 байт
одинарный вывод:
десятичный вывод, 73 + 1 байт:
Запустите как трубу с
-nR
или попробуйте онлайн .Для оператора Элвиса требуется PHP 5.3 или новее. Для более старых версий PHP заменить
?:
на?$n%$s:
(+5 байт).источник
Рубин, 46 байт
источник
Хаскелл ,
94938988 байтЭто чувствует себя очень долго ..
Попробуйте онлайн!
Спасибо @Laikoni & @nimi за то, что вы играете в гольф по 1 байту каждый!
источник
C (gcc) ,
83817673 байтаПопробуйте онлайн!
источник
Желе , 12 байт
Попробуйте онлайн!
источник
Pyth,
2014 байтовПопробуй это здесь.
источник
Perl,
71байт,64байта, 63 байтаПопробуйте онлайн
РЕДАКТИРОВАТЬ: сохранено 7 байтов, благодаря комментарию Xcali
РЕДАКТИРОВАТЬ: с 5.14 неразрушающего замещения s /// r
источник
-pl
на вершине должен быть флаг командной строки вместо этого?-pl
флаг согласно этому посту .$c
не нужно инициализировать. Начнется сundef
нуля. Через некоторое время точка с запятой может идти. Кроме того, вам не нужно-l
. Не требуется принимать несколько входов за один прогон.Дьялог АПЛ, 36 байт
Попробуйте онлайн!
Как?
источник
Gaia , 13 байт
Попробуйте онлайн!
объяснение
источник
Matlab, 150 байт
Входные данные должны быть даны функции в виде строки, такой как X ('152').
Функция работает при цикле и приращении d.
x=y;
Линия была необходима , чтобы избежать ошибки Matlab пытается прочитать и переписать значение переменной в то же время, по- видимому, который был для меня новым.Ungolfed:
источник
Haskell , 68 байт
Попробуйте онлайн! Основано на ответе w0lf .
источник
R 85 байт
Анонимная функция, которая возвращает требуемый вывод.
Проверьте все контрольные примеры!
источник