Также известный как [аналог корня]
( Напротив цифрового корня! );)
Цифровой корень числа - это непрерывное суммирование его цифр, пока оно не станет одной цифрой, например, цифровой корень 89456 вычисляется следующим образом:
8 + 9 + 4 + 5 + 6 = 32
3 + 2 = 5
Цифровой корень 89456 равен 5.
Если в качестве ввода через STDIN введена цифра , выведите / верните все возможные двузначные числа, имеющие этот цифровой корень. Если вам это нужно, он может включать себя, например, 05
Это все возможные входы и выходы:
(Вы можете выбрать, следует ли включать ведущий ноль для самой цифры)
I / O
0 => 0 или 00 или ничего
1 => 01 и / или 1, 10, 19, 28, 37, 46, 55, 64, 73, 82, 91 - убедитесь, что 1 не возвращает 100
2 => 02 и / или 2, 11, 20, 29, 38, 47, 56, 65, 74, 83, 92
3 => 03 и / или 3, 12, 21, 30, 39, 48, 57, 66, 75, 84, 93
4 => 04 и / или 4, 13, 22, 31, 40, 49, 58, 67, 76, 85, 94
5 => 05 и / или 5, 14, 23, 32, 41, 50, 59, 68, 77, 86, 95
6 => 06 и / или 6, 15, 24, 33, 42, 51, 60, 69, 78, 87, 96
7 => 07 и / или 7, 16, 25, 34, 43, 52, 61, 70, 79, 88, 97
8 => 08 и / или 8, 17, 26, 35, 44, 53, 62, 71, 80, 89, 98
9 => 09 и / или 9, 18, 27, 36, 45, 54, 63, 72, 81, 90, 99
Никаких стандартных лазеек , и это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Поздравляю Heeby Jeeby Man с его удивительным 46-байтовым ответом!
Ответы:
Пайк, 6 байт
Попробуй это здесь!
источник
JavaScript (ES6),
273130 байтВозвращает
0
для0
или массив решений в противном случае.демонстрация
Показать фрагмент кода
источник
+
чтобы сохранить еще один байт? Хотя, я полагаю, это не будет работать со строкой stdin.+
... Обновлено. Благодарность!05AB1E ,
13129 байтов-3 байта благодаря Аднану
Попробуйте онлайн!
объяснение
источник
SOSO
, так как число никогда не будет больше 99.тL<
на самом деле не меньше , чем обычный99Ý
. ;)Haskell , 21 байт
f
принимает целое число и возвращает список целых чисел.Попробуйте онлайн!
d
и генерирует диапазон с каждым 9-м числом до границы 99, за исключением хитрого случая0
.0
, использует эту силу0^d==1
для0
и==0
для всех остальных цифр. Таким образом ,99^0^0^d
дает1
для0
но99
для чего -то еще.источник
Желе , 8 байт
Попробуйте онлайн!
Другой алгоритм, чем мой другой ответ.
источник
Brain-Flak , 46 байтов
Попробуйте онлайн!
объяснение
В этом ответе используется идея из ответа Мегатома, а именно использование высоты стека в качестве разницы между счетчиком цикла и приращением. Как и в предыдущих ответах, этот ответ имеет большой внешний цикл, чтобы поймать все нули. Внутри цикла мы нажимаем 10, чтобы действовать как счетчик, затем запускаем другой вложенный цикл. В этом цикле мы уменьшаем счетчик на 1
Затем мы выталкиваем два верхних элемента: счетчик и последний вычисленный элемент. Мы добавляем их к высоте стека, чтобы уравновесить декремент, затем нажимаем это дважды, один раз для вывода и один раз, чтобы его можно было использовать для вычисления следующего результата. Двойное нажатие означает, что мы случайно выдвинули дополнительное значение, которое необходимо удалить в конце выполнения.
Причина, по которой это едва ли превосходит Мегатом, заключается в том, что ответ Мегатома вынужден получать высоты стека, пока последний результат все еще находится в стеке. Это означает, что они вынуждены использовать довольно дорого,
[()]
чтобы уменьшить общее количество на единицу. Перемещая дубликат в конец цикла, я могу избежать использования[()]
за счет дополнительного{}
в самом конце программы. Если бы Мегатом использовал эту стратегию, его ответ выглядел бы так:также 46 байтов.
Brain-Flak , 52 байта
Попробуйте онлайн!
объяснение
Основной внешний цикл делает особый случай для ввода нуля. Если вводится ноль, мы перепрыгиваем через весь цикл, выводим ноль и ничего не выводим. В противном случае мы входим в цикл. Здесь мы нажимаем цикл 10 раз каждый раз, добавляя 9 к вершине стека, сохраняя старые значения. Поскольку 9 сохраняет цифровые суммы, мы получим следующее значение. Когда цикл истек, мы используем сгенерированный ноль для выхода из цикла, который затем выталкивается
{}
в конце.Brain-Flak , 56 байт
Попробуйте онлайн!
объяснение
Эта версия работает очень похоже на последнюю, за исключением того, что мы зациклились 9 раз вместо 10, оставив исходное значение. Чтобы сделать это, нам нужно немного изменить способ обработки памяти. Все байты, которые мы могли сохранить с помощью этого метода, помещаются в очистку.
источник
Python 2 , 29 байт
Попробуйте онлайн!
источник
Брахилог , 12 байт
Попробуйте онлайн!
объяснение
источник
Баш ,
3127 байтПопробуйте онлайн!
предыдущий
источник
brace expansion: (...) A sequence expression takes the form {x..y[..incr]}, where x and y are either integers or single characters, and incr, an optional increment, is an integer. (...) When the increment is supplied, it is used as the difference between each term. The default increment is 1 or -1 as appropriate.
Дьялог АПЛ, 15 байт
Как?
⍵,10⍴9
- объединить ввод с 109
с (⍵ 9 9 9 9 9 9 9 9 9 9
).+\
накопительная сумма.(×⍵)/
- увеличить время signum - где signum дает 1 для 1-9 и 0 для 0.Попробуйте онлайн!
Дьялог АПЛ, 24 байта
Требуется
⎕IO←0
.Как?
источник
Brain-Flak , 48 байтов
Попробуйте онлайн!
Я могу добавить объяснение позже.
источник
Mathematica, 25 байтов
работает на 0
источник
0
. Это также не будет включать числа, чьи цифры в сумме составляют число больше 9. (например9
, не будет99
в выходных данных).Желе , 12 байт
Попробуйте онлайн!
Как это устроено
источник
0
На самом деле , 18 байт
Попробуйте онлайн!
Объяснение:
источник
PHP, 41 байт
печать подчеркивает разделенные значения
ERA
самая короткая константа в PHP со значением131116
. Вы можете заменить его скучной альтернативой100
или завершить программуdie
Онлайн версия
источник
Brain-Flak ,
5452 байтаПопробуйте онлайн!
Мой первый набег с Brain-Flak, и я думаю, что у меня все получилось. Кто-нибудь с большим опытом есть совет?
Как это устроено:
источник
Желе , 12 байт
Попробуйте онлайн!
источник
PHP, 35
Создает диапазон
[$argn, 100)
с шагом9
как массив и печатает его. Если ввод, то0
он создает диапазон[0,0]
=>array(0)
.источник
Python,
4851 байт3 байта сохранены благодаря @WheatWizard
источник
~-x
вместо(x-1)
if ~-x%9
~-n==~-x%9or x==n
чтобы сохранить байтR , 23 байта
Попробуйте онлайн!
function(x)
Вместо ссылки используется ссылка TIOpryr::f
, посколькуpryr
пакет TIO не установлен.источник
Пайк, 6 байт (старая версия)
Рабочий коммит
Объяснение:
источник
Рубин , 25 байт
Попробуйте онлайн!
источник
C (gcc) , 55 байтов
f()
на самом деле не нужно вызывать с каким-либо аргументом;n
только там вместо того , чтобы за пределами функции , чтобы сохранить байт.Попробуйте онлайн!
источник
printf
внутри заголовка цикла: попробуйте онлайн!Древесный уголь ,
1411 байтовПопробуйте онлайн! Ссылка на подробную версию кода. Редактировать:
2 байтасохранены, не печатая ничего для нулевого ввода и 1 байт, используя векторизационные операции3 байта благодаря @ ASCII-only. Объяснение:источник
Юлия 0,6 , 18 байт
Я использую троичный, чтобы поймать
0
случай, и диапазон,n:9:99
чтобы создать числа. В julia диапазон являетсяAbstractVector
и может использоваться вместо фактическихVector
чисел в большинстве случаев, но он будет печатать только то,1:9:91
что не удовлетворяет задаче, поэтому я обертываю его,[_;]
чтобы собрать содержимое вVector
.Попробуйте онлайн!
источник
Perl 5 , 25 + 1 (
-n
) = 26 байтПопробуйте онлайн!
источник
Clojure, 33 байта
источник
Clojure , 38 байт
или как анонимная функция, которая составляет 29 байт
Попробуйте онлайн!
спасибо @steadybox
источник
n=9
отсутствует последний номер99
,. Попробуйте онлайн! Также вы можете сохранить байт, удалив пробел междуf[n]
и(if(...
.Perl 5, 62 байта
Там должен быть более короткий путь
источник
Gol> <> , 12 байт
Попробуйте онлайн!
Как это устроено
источник