Это отличается от того, что Мое Слово может разбить ваше Слово, поскольку оно менее сложно и требует только того, чтобы вы его вычисляли, а не сравнивали.
Чтобы найти цифровой корень, возьмите все цифры числа, добавьте их и повторяйте, пока не получите однозначное число. Например, если номер был 12345
, вы бы добавить 1
, 2
, 3
, 4
, и 5
, получив 15
. Вы бы потом добавили 1
и 5
, дав вам 6
.
Твое задание
Принимая во внимание целое число N (0 <= N <= 10000) через STDIN , напечатать цифровой корень N .
Контрольные примеры
1 -> 1
45 -> 9
341 -> 8
6801 -> 6
59613 -> 6
495106 -> 7
Помните, что это код-гольф , поэтому выигрывает код с наименьшим количеством байтов.
code-golf
number
arithmetic
Оливер Ни
источник
источник
number
. Особенно. вход должен0
быть поддержан?STALEMATE
. Может быть, лучше закрыть другую, как обмануть это.Ответы:
Пайк, 1 байт
Попробуй это здесь!
Принимает цифровой корень ввода
источник
Желе ,
7 5 43 байтаTryItOnline! или все тестовые случаи
Как?
Известно, что цифровой корень подчиняется формуле (n-1)% 9 + 1.
Это то же самое , как последняя цифра в биективном основании 9
(и в связи с осуществлением этого
0ḃ9=[]
и[]Ṫ=0
этой ручкой краевого случае нулевого).источник
JavaScript (ES6),
1610 байтКонтрольные примеры
Показать фрагмент кода
источник
MATL , 3 байта
Попробуйте онлайн!
Многие (теперь удаленные ответы) пытались использовать модуль 9, чтобы получить результат. Это отличный способ, но, к сожалению, он не работает для кратных 9. В MATL есть функция для модуля на интервале
[1, n]
. Используя это по модулю, мы имеем1 % 3 == 1, 2 % 3 == 2, 3 % 3 == 3, 4 % 3 == 1
, и т. Д. Этот ответ просто принимает вход по модулю девять, используя этот пользовательский по модулю.источник
Mathematica,
2711 байтовMathematica
Mod
принимает третий параметр в качестве смещения результирующего диапазона по модулю. Это позволяет избежать уменьшения входных данных и увеличения выходных данных.источник
Python,
1620 байт+4 байта для обработки нулевого края.
repl.it
источник
~-input()%9+1
print
?0
результата9
вместо0
, а это то, что обслуживаетсяn and
частью кода), кроме того, он бы считался 19 байтами, а не 13 ( так какprint
и пространство надо считать).Юлия, 12 байт
или
mod1
является альтернативой,mod
которой сопоставляется диапазон[1, n]
вместо[0, n)
.источник
PHP, 15 байт
Предыдущая версия PHP, 55 байт
источник
<?=--$argv[1]%9+1?>
Haskell,
3534 байтаПопробуйте это на Ideone.
Объяснение:
источник
Perl, 15 байт
Включает +2 для
-lp
Внести вклад в STDIN
root.pl
Это скучное решение, которое уже было дано на многих языках, но по крайней мере эта версия поддерживает
0
слишкомБолее интересно делать реальные повторные добавления (хотя и в другом порядке) на самом деле всего на 1 байт:
источник
R
72 6729 байтРедактировать: Спасибо @rturnbull за сбрить два байта.
источник
ifelse
можно заменить`if`
, с одинаковым поведением, что экономит пару байтов.if
` работает. Не могли бы вы привести пример или, возможно, добавить его в советы для игры в гольф?ifelse
. В этом случае`if`(n%%9|!n,n%%9,9)
обеспечивает идентичное поведение с кодом, который вы опубликовали. Насколько я могу судить, это поведение недокументировано! Я добавлю комментарий в ветку советов.Сетчатка , 7 байт
Попробуйте онлайн!
Я вижу много математических решений, но в Retina прямой подход кажется лучшим.
объяснение
{`
заставляет всю программу работать в цикле, пока строка больше не изменится. Цикл состоит из двух этапов:Конвертировать каждую цифру в одинарный.
Подсчитать количество символов (= преобразовать унарное число в десятичное).
Это работает, потому что преобразование каждой цифры в унарную без разделителя между цифрами создает одно унарное число, равное сумме всех цифр.
источник
Брахилог , 9 байт
Попробуйте онлайн!
объяснение
Альтернативный подход, 11 байт
Этот использует мета-предикат
i - Iterate
для вызоваI
временного предиката{@e+}
на входе. Это будет пытаться значенияI
от0
до бесконечности, пока один не сделает это так, что выводi
представляет собой одну цифру, которая становится#0
правдой.источник
JavaScript (ES6),
4138 байтСохранено 3 байта, благодаря Bassdrop Cumberwubwubwub
Принимает и возвращает строку.
Контрольные примеры
Показать фрагмент кода
источник
s.split``
на[...s]
CJam ,
1913 байтовпереводчик
Объяснение:
Спасибо 8478 (Мартин Эндер) за -6 байт.
CJam, 6 байтов
Предложено 8478 (Мартин Эндер). переводчик
Я думал об этом, но Мартин только что получил это до меня. Объяснение:
источник
:
, так что вы можете сделать:~:+
. Также не помешает запустить блок хотя бы один раз, так что вы можете использоватьg
цикл вместоw
цикла.r{_,1>}{:~:+`}w
работает, но я не знаю, как на земле я должен использоватьg
здесь.r{:~:+_s\9>}g
(Конечно, решение в закрытой формеri(9%)
намного короче.Java 7, 63 байта
Рекурсивная функция, которая просто получает цифры с помощью mod / div. Ничего фантастического.
Дешевый порт
из Джонатан Аллана бы ничтожные 28 байт:
источник
Python 2,
5451 байтСпасибо Оливеру и Карлу Напфу за помощь в экономии 3 байтов
источник
while len(i)>1
чтобыwhile~-len(i)
сохранить один байт.input()
и заставить ввод заключить в кавычки, чтобы сохранить 2 байта.Python, 45 байт
Принимает аргумент в виде строки.
источник
05AB1E , 6 байтов
Попробуйте онлайн!
объяснение
источник
C,
6429 байтПорт C из ответа Джонатана Аллана (с особым случаем 0).
Предыдущий 64-байтовый код:
q
берет перекрестную сумму иf
повторяет взятие перекрестной суммы до одной цифры.источник
Сетчатка , 15 байт
Попробуйте онлайн! (Первая строка включает набор тестов, разделенных переводом строки.)
объяснение
Преобразовать ввод в унарный.
Возьмите 1 на основе модуля, удалив девятки, которые имеют по крайней мере еще один символ после них.
Посчитайте оставшееся число 1, чтобы преобразовать обратно в десятичную.
источник
Perl 6 , 29 байт
Expanded:
источник
Фактор , 24
Умный , математический ответ.
63 для тупого итеративного решения:
источник
Лабиринт , 8 байт
используя уравнение
(n-1)%9+1
:?
читает входные данные как десятичные и помещает их в стек(
уменьшает вершину стека_
толкает ноль на вершину стека9
нажмите верхнюю часть стопки раз 10 цифр (в данном случае 9)%
всплывает у, всплывает х, толкает х% у)
увеличивает вершину стека!
выдвигает вершину стека и выводит ее как десятичную строку@
завершает программуисточник
Pyth -
7467 байтНе самый лучший, но все же бьет приличное количество ответов:
Как и в предыдущей версии, но обрабатывает также случаи, кратные 9, используя логические или.
Эта версия не проходит 45 тестов :
Объяснение:
Попробуй здесь
Попробуйте предыдущую версию здесь!
Предыдущие решения:
Пояснение :
Вы приглашены попробовать это здесь !
источник
jQ9
не действует как желеḃ9
:-PAPL (Dyalog) ,
159 байтПопробуйте онлайн!
источник
Гексагония,
1915 байтБолее читабельно:
Попробуйте онлайн!
-3 байта, используя другой подход, делая случай с краем 0 тривиальным.
-1 байт, исправляя ошибку в 0 краях
Используя формулу ((n-1) mod 9) + 1, как и многие другие решения.
источник
K (ок) , 9 байт
Решение:
Попробуйте онлайн!
Объяснение:
Супер просто. Разбейте число на цифры и суммируйте - делайте это до тех пор, пока результат не сойдет:
источник
x\y
кодированиеy
в базеx
столько раз, сколько необходимо, так что это немного короче:(+/10\)/
10\:
.. но не в ОК - и.:'$
такое же количество байтов - так что я пошел с этим :)\:
в kdb + (3.4+), но для ОК мне нужно знать, сколько десятков добавить в мой список.Кег , 6 байтов (SBCS на Кеге вики)
Объяснение:
источник
Рубин, 12 байт
источник
19
? Не должно ли это быть9
?