Também conhecida como [raiz analógica]
( Oposto da raiz digital! );)
A raiz digital de um número é a soma contínua de seus dígitos até que seja um único dígito; por exemplo, a raiz digital de 89456 é calculada da seguinte forma:
8 + 9 + 4 + 5 + 6 = 32
3 + 2 = 5
A raiz digital de 89456 é 5.
Dado um dígito como entrada via STDIN , imprima / retorne todos os possíveis números de dois dígitos que possuem essa raiz digital. Se você precisar, ele pode incluir-se, por exemplo, 05
Estas são todas as entradas e saídas possíveis:
(Você escolhe se deseja ou não incluir o zero inicial para o próprio dígito)
I / O
0 => 0 ou 00 ou nada
1 => 01 e / ou 1, 10, 19, 28, 37, 46, 55, 64, 73, 82, 91 - Verifique se 1 não retorna 100
2 => 02 e / ou 2, 11, 20, 29, 38, 47, 56, 65, 74, 83, 92
3 => 03 e / ou 3, 12, 21, 30, 39, 48, 57, 66, 75, 84, 93
4 => 04 e / ou 4, 13, 22, 31, 40, 49, 58, 67, 76, 85, 94
5 => 05 e / ou 5, 14, 23, 32, 41, 50, 59, 68, 77, 86, 95
6 => 06 e / ou 6, 15, 24, 33, 42, 51, 60, 69, 78, 87, 96
7 => 07 e / ou 7, 16, 25, 34, 43, 52, 61, 70, 79, 88, 97
8 => 08 e / ou 8, 17, 26, 35, 44, 53, 62, 71, 80, 89, 98
9 => 09 e / ou 9, 18, 27, 36, 45, 54, 63, 72, 81, 90, 99
Sem brechas padrão , e é um código de golfe , então a resposta mais curta em bytes vence.
Parabéns a Heeby Jeeby Man por sua incrível resposta cerebral de 46 bytes!
Respostas:
Pyke, 6 bytes
Experimente aqui!
fonte
JavaScript (ES6),
273130 bytesRetorna
0
para0
ou uma variedade de soluções caso contrário.Demo
Mostrar snippet de código
fonte
+
para salvar outro byte? Embora não funcionasse com stdin string dessa maneira, suponho.+
veio ... Atualizado. Obrigado!05AB1E ,
13129 bytes-3 bytes graças a Adnan
Experimente online!
Explicação
fonte
SOSO
, uma vez que o número nunca será maior do que 99.тL<
não é realmente mais curto do que simples99Ý
. ;)Haskell , 21 bytes
f
pega um número inteiro e retorna uma lista de números inteiros.Experimente online!
d
e gera o intervalo com cada nono número até um limite de 99, exceto no caso complicado de0
.0
, usa esse poder0^d==1
para0
e==0
para todos os outros dígitos. Assim,99^0^0^d
dá1
para,0
mas99
para qualquer outra coisa.fonte
Gelatina , 8 bytes
Experimente online!
Algoritmo diferente da minha outra resposta.
fonte
Brain-Flak , 46 bytes
Experimente online!
Explicação
Esta resposta usa uma idéia da resposta da Megatom, ou seja, usar a altura da pilha como a diferença entre o contador de loop e o incremento. Como respostas anteriores, esta resposta possui um loop externo grande para capturar todos os zeros. Dentro do loop, pressionamos 10 para atuar como um contador e, em seguida, iniciamos outro loop aninhado. Nesse loop, decrementamos o contador em 1
Em seguida, exibimos os dois itens principais, que são o contador e o último item que calculamos. Nós os adicionamos à altura da pilha para contrabalançar a decrementação e, em seguida, pressionamos isso duas vezes, uma vez para a saída e outra para que possa ser consumida para calcular o próximo resultado. Pressionar as coisas duas vezes significa que acidentalmente pressionamos um valor adicional que precisa ser removido no final da execução.
A razão pela qual isso apenas supera o Megatom é a resposta do Megatom é forçada a obter a altura da pilha enquanto o último resultado ainda está na pilha. Isso significa que eles são forçados a usar um bastante caro
[()]
para diminuir o total em um. Ao mover a duplicata para o final do loop, sou capaz de evitar ter que usar[()]
o custo de uma adicional{}
no final do programa. Se a Megatom usasse essa estratégia, sua resposta seria:também 46 bytes.
Flacidez Cerebral , 52 bytes
Experimente online!
Explicação
O loop externo principal faz um caso especial para a entrada de zero. Se zero for inserido, saltamos sobre o loop inteiro, zeramos o zero e depois não produzimos nada. Caso contrário, entramos no loop. Aqui pressionamos o loop 10 vezes cada vez, adicionando 9 ao topo da pilha, mantendo os valores antigos. Como 9 preserva somas digitais, isso nos dará o próximo valor. Depois que o loop expirar, usamos o zero gerado para sair do loop, que é exibido
{}
no final.Brain-Flak , 56 bytes
Experimente online!
Explicação
Esta versão funciona de maneira muito semelhante à última, exceto que repetimos 9 vezes em vez de 10, deixando de fora o valor original. Para fazer isso, precisamos reorganizar a maneira como lidamos com a memória um pouco. Todos os bytes que podemos ter salvado usando esse método são colocados em limpeza.
fonte
Python 2 , 29 bytes
Experimente online!
fonte
Braquilog , 12 bytes
Experimente online!
Explicação
fonte
Bash ,
3127 bytesExperimente online!
anterior
fonte
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.
Dyalog APL, 15 bytes
Quão?
⍵,10⍴9
- concatene a entrada com 109
s (⍵ 9 9 9 9 9 9 9 9 9 9
).+\
- soma acumulada.(×⍵)/
- expanda os tempos de referência - em que a referência fornece 1 para 1-9 e 0 para 0.Experimente online!
Dyalog APL, 24 bytes
Requer
⎕IO←0
.Quão?
fonte
Brain-Flak , 48 bytes
Experimente online!
Eu posso adicionar uma explicação mais tarde.
fonte
Mathematica, 25 bytes
trabalha para 0
fonte
0
. Isso também não inclui números cujos dígitos somam um número maior que 9. (por exemplo9
, não teriam99
na saída).Gelatina , 12 bytes
Experimente online!
Como funciona
fonte
0
Na verdade , 18 bytes
Experimente online!
Explicação:
fonte
PHP, 41 bytes
imprime valores separados por sublinhado
ERA
é a constante de mais curto em PHP com o valor131116
. Você pode substituí-lo pela alternativa chata100
ou encerrar o programa comdie
Versão Online
fonte
Brain-Flak ,
5452 bytesExperimente online!
Minha primeira incursão no Brain-Flak, e acho que me saí muito bem. Alguém com mais experiência tem conselhos?
Como funciona:
fonte
Gelatina , 12 bytes
Experimente online!
fonte
PHP, 35
Cria o intervalo
[$argn, 100)
com uma etapa de9
como matriz e o imprime. Se a entrada for,0
ela cria o intervalo[0,0]
=>array(0)
.fonte
Python,
4851 bytes3 bytes salvos graças a @WheatWizard
fonte
~-x
vez de(x-1)
if ~-x%9
~-n==~-x%9or x==n
salvar um byteR , 23 bytes
Experimente online!
O link do TIO usa em
function(x)
vez depryr::f
, pois o TIO não possui opryr
pacote instalado.fonte
Pyke, 6 bytes (versão antiga)
Confirmação de trabalho
Explicação:
fonte
Ruby , 25 bytes
Experimente online!
fonte
C (gcc) , 55 bytes
f()
não precisa realmente ser chamado com nenhum argumento; on
está lá em vez de fora da função para salvar um byte.Experimente online!
fonte
printf
interior do cabeçalho do loop: Experimente online!Carvão ,
1411 bytesExperimente online! Link é a versão detalhada do código. Editar: salvou
2 bytes por não imprimir nada para entrada zero e 1 byte usando operações de vetorização de3 bytes graças a @ ASCII-only. Explicação:fonte
Julia 0.6 , 18 bytes
Uso um ternário para entender o
0
caso e um intervalon:9:99
para criar os números. Em julia, um intervalo é umAbstractVector
e pode ser usado no lugar de umVector
número real na maioria dos casos, mas ele será impresso apenas como o1:9:91
que não satisfaz o desafio, então eu o envolvo[_;]
para coletar o conteúdo em umVector
.Experimente online!
fonte
Perl 5 , 25 + 1 (
-n
) = 26 bytesExperimente online!
fonte
Clojure, 33 bytes
fonte
Clojure , 38 bytes
ou como função anônima com 29 bytes
Experimente online!
obrigado @steadybox
fonte
n=9
está faltando o último número99
,. Experimente online! Além disso, você pode salvar um byte removendo o espaço entref[n]
e(if(...
.Perl 5, 62 bytes
É provável que haja uma maneira mais curta
fonte
Gol> <> , 12 bytes
Experimente online!
Como funciona
fonte