Учитывая положительное целое число n
( пример:n=1234444999
)
- Разделяйте на последовательные цифры:
[1, 2, 3, 4444, 999]
- Возьмите цифровой продукт каждого запуска.
[1, 2, 3, 4*4*4*4, 9*9*9] = [1, 2, 3, 256, 729]
- Суммируйте это ...
- +991
- Повторите, пока это не сходится к одному числу:
- 1234444999
- +991
- 82
- 10
- 1
- Верните последний номер.
Тестовые случаи
BASE CASES:
0 = 0
...
9 = 9
OTHER CASES:
1234444999 = 1
222222222222222 = 8
111222333444555666777888999000 = 9
11122233344455566677788899 = 8
1112223334445 = 6
14536 = 1
99 = 9
Запрошенный пример:
334455553666333
9+16+625+3+216+27
896
8+9+6
23
2+3
**5**
Победа?
Это код-гольф , самый низкий счетчик байтов является победителем.
11122233344455566677788899
.33445555666333
?Ответы:
05AB1E ,
765 байтБлагодаря Emigna за сохранение байта!
Использует кодировку 05AB1E . Попробуйте онлайн!
источник
gF
наv
.Желе, 9 байт
Попробуйте онлайн
Вот как это работает:
источник
€
.Œg
это противоречиво, когда есть только одна группа. В чем причина этого?Mathematica,
5542 байта-13 байтов от @JungHwan Мин . Thanx!
в случае, если кто-то хочет использовать это как генератор случайных цифр,
вот подсчет первых 100.000 чисел
источник
Джапт ,
171513 байтПроверьте это онлайн!Принимает ввод в виде строки.
Все еще не удовлетворен этим ответом ...
объяснение
источник
x_×
сочетании сI'm unsatisfied
заставило меня смеяться. Благодарность ;).ß
возможно, был путь сюда. Я ошибался! (По крайней мере, в половине 5 утра ', сел в автобус до аэропорта я был!)Python 3 , 96 байт
Попробуйте онлайн!
источник
Брахилог , 8 байт
Попробуйте онлайн!
объяснение
источник
Pyth, 11 байт
Попробуйте онлайн. Тестирование.
источник
PHP , 113 байт
Попробуйте онлайн!
источник
Шелуха , 8 байт
Принимает и возвращает целое число. Попробуйте онлайн!
объяснение
Было бы неплохо иметь встроенную базовую цифру в 10 цифр ...
источник
JavaScript (ES6),
77736765 байтСохранено 2 байта благодаря @CraigAyre
Как?
Входные данные s преобразуются в арифметическое выражение с:
Например,
1234444999
становится+1+2+3+4*4*4*4+9*9*9
.Мы оцениваем это выражение и делаем рекурсивный вызов с результатом, пока он не сводится к одной десятичной цифре.
Контрольные примеры
Показать фрагмент кода
источник
f=s=>s>9?f(''+eval(s.replace(/(.)\1*/g,s=>'+'+[...s].join`*`))):s
CJam , 22 байта
Попробуйте онлайн!
источник
Haskell ,
1037069 байтПопробуйте онлайн!
источник
until(<10)
. Такжеmap(read.pure)
можно перемещать доshow
, что сохраняет скобки.$
вместо внешних скобок.R ,
114104 байтачитает со стандартного ввода; возвращает ответ в виде строки.
Попробуйте онлайн!
источник
paste
вместоas.character
. Бывший принуждает его ввод вcharacter
тип ;-)MATL, 11 байт
Попробуйте это на MATL Online
объяснение
источник
Perl 5 , 50 байт
49 байт кода +
-p
флаг.Попробуйте онлайн!
источник
R
9796 байтНемного другой подход, чем другой ответ с использованием R.
Этот ответ использует
rle
функцию, котораяcompute[s] the lengths and values of runs of equal values in a vector
.-1 байт благодаря @Giuseppe!
источник
**
эквивалентно^
Брайнгольф, 25 байт
Добавлю ссылку TIO, как только я заставлю Денниса вытянуть последнюю версию, так как использование жадных операторов внутри
(...)
циклов в TIO в настоящее время не работаетобъяснение
источник
Japt , 19 байт
Попробуйте онлайн!
Объяснение:
источник