Самый короткий код для прохождения всех возможностей выигрывает.
В математике постоянство числа измеряет, сколько раз определенная операция должна применяться к его цифрам, пока не будет достигнуто некоторое определенное фиксированное условие. Вы можете определить аддитивное постоянство положительного целого числа, добавив цифры целого числа и повторив. Вы продолжаете добавлять цифры суммы, пока не будет найдено однозначное число. Количество повторений, которое потребовалось для достижения этого однозначного числа, является аддитивным постоянством этого числа.
Пример использования 84523:
84523
8 + 4 + 5 + 2 + 3 = 22
2 + 2 = 4
It took two repetitions to find the single digit number.
So the additive persistence of 84523 is 2.
Вам будет дана последовательность положительных целых чисел, из которых вы должны рассчитать аддитивную стойкость. Каждая строка будет содержать другое целое число для обработки. Ввод может быть любым стандартным методом ввода / вывода .
Для каждого целого числа вы должны вывести целое число, затем один пробел и его аддитивное постоянство. Каждое обработанное целое число должно быть в отдельной строке.
Тестовые случаи
Ввод, вывод
99999999999 3
10 1
8 0
19999999999999999999999 4
6234 2
74621 2
39 2
2677889 3
0 0
источник
Ответы:
К - 29 символов
Ввод - это имя файла, переданное в качестве аргумента, 29 символов, не включая имя файла.
источник
-1+#
=>#1_
Python 84 символа
источник
06234
.. результат успешного вызова :-)Хаскелл, 100 знаков
источник
read.pure
вместо(-48+).fromEnum
, попробуйте онлайн!Python (93 байта)
источник
9
и ошибаться ...and
input()
вместоint(raw_input())
....06234
.Шелуха ,
1015 байт+5 байт для ужасного требования ввода / вывода
Попробуйте онлайн!
объяснение
Для поддержки нескольких входов нам нужно использовать
m(₁r)¶
(где₁
функция, выполняющая интересные вычисления):Функция
₁
выполняет следующие действия:источник
Баш, 105 символов
Едва ли это связано с гольфом, но я не вижу, как его улучшить.
источник
Haskell - 114
источник
pure
over(:[])
и определяя вместо негоs
, попробуйте онлайн!Рубин, 85 символов
Мне пришлось позаимствовать идею «сумма-размер * 48» у Алекса, потому что она слишком аккуратна, чтобы ее пропустить (по крайней мере, в Ruby).
источник
Golfscript, 40 символов
источник
J - 45 символов
Читает со стандартного ввода
источник
^:a:
себя, но я не мог найти надлежащую документацию ... какие-либо подсказки?a:
помощью^:a:
трюка в J Reference Card [PDF]^:a:
том, что я знал: D^:(<'')
сначала использовал ее в качестве некоторого варианта (вероятно, для Kaprekar), пока не заметил его в карточке, и узнал обa:
этом случае.с - 519
(или 137, если вы отдаете мне должное за рамки ...)
Вместо того, чтобы решать только эту операцию, я решил создать основу для решения всех постоянных проблем .
Только две строки, начиная с,
char*b
являются уникальными для этой проблемы.Он обрабатывает входные данные как строки, что означает, что начальные «0» не передаются перед выходным каскадом.
Выше были добавлены комментарии, проверка ошибок и отчеты, а также чтение файла (входные данные должны поступать со стандартного ввода) из:
Немного больше можно было бы спасти, если бы мы хотели утратить память, как сито. Точно так же,
#define
возвращая и тому подобное, но на данный момент я не хочу, чтобы это было еще страшнее.источник
J, 74 знака
Правки
[:
буквы к Ats@
0".
к".
упрощает вещиНапример
источник
Я думаю, что это лучшее из того, что я могу придумать.
Ruby 101 Chars
источник
PARI / GP 101 Чарс
К сожалению, для GP нет функции ввода, так что я думаю, что в ней отсутствует часть ввода-вывода. :(Исправлено: Спасибо Eelvex! :)источник
input()
:)Javascript - 95
РЕДАКТИРОВАТЬ: Whoops не делает несколько строк
источник
J, 78
Рекурсивное решение. Читает со стандартного ввода. Пишет в stdout , так что не торопись - для этого нужны лишние 18-ти символьные символы.
источник
Perl - 77 символов
источник
JavaScript ,
5747 байт-10 байт благодаря @ l4m2!
Попробуйте онлайн!
источник
f=(s,c=0)=>s>9?f([...s+""].reduce((x,y)=>x*1+y*1),++c):c
f=(s,c=0)=>s>9?f([...s+""].reduce((x,y)=>x- -y),++c):c
f=(s,c=0)=>s>9?f(eval([...s+""].join`+`)),++c):c
s>9
иeval
были отличные идеи. Я думаю, что у вас там был лишний паренон, то есть всего 10 байт, которые вы спасли меня :-)05AB1E , 13 байтов
Ввод в виде списка целых чисел.
Попробуйте онлайн.
Объяснение:
источник
MathGolf , 11 байт
Попробуйте онлайн!
Невероятно неэффективно, но нас это не волнует. В основном, используя тот факт, что аддитивная стойкость числа меньше или равна самому числу.Используется тот факт, что аддитивная стойкость меньше или равна количеству цифр числа. Теперь легко проходит все тесты.
Формат ввода, хотя и неоптимальный для некоторых языков, на самом деле является стандартным методом принятия нескольких тестовых случаев в качестве входных данных в MathGolf. Каждая строка ввода обрабатывается как собственное выполнение программы, а вывод отделяется одной новой строкой для каждого выполнения.
Объяснение (использование
n = 6234
)источник
К (нгн / к) , 16 байт
Решение:
Попробуйте онлайн!
Объяснение:
источник
Stax ,
811 байтЗапустите и отладьте его
+3 байта благодаря @Khuldraeseth (первый ответ не дал совместимого вывода)
источник
i
на местеu
. Придерживаясь драконовских спецификаций ввода / вывода, это становится 11 байтами .Скала 173:
источник
Perl 5 , 65 байт
Попробуйте онлайн!
источник
Java (OpenJDK 8) , 79 байт
Попробуйте онлайн!
Есть вероятный потенциал для игры в гольф дальше, но я рассмотрю это в будущем, но сейчас я очень доволен этим небольшим результатом.
источник
Python 3 , 82 байта
источник
Tcl , 95 байт
Попробуйте онлайн!
источник
Japt , 28 байт
Попробуйте онлайн!
источник
PHP, 72 + 1 байт
+1 за
-R
флаг.Беги как труба с
-R
.$i
должно быть инициализировано.(Кроме того, он не печатает ничего вместо
0
одной цифры без инициализации.)источник
Bash + coreutils, 83 байта
Попробуйте онлайн!
Должен быть сохранен в сценарий , который вызывается
a
и помещается в системуPATH
, так как он вызывает себя рекурсивно. Принимает ввод из командной строки, какa 1999
. Возвращает по коду выхода.TIO имеет некоторые ограничения в отношении того, что вы можете делать с помощью скрипта, поэтому в заголовке приведен некоторый стандартный код.
Выводит ошибку
stderr
для ввода, большего, чем могут обработать целые числа bash, но поскольку фактические вычисления выполняются со строками, это все равно дает правильный результат в любом случае.источник