Isso não tem propósito prático, mas pode ser divertido jogar golfe.
Desafio
Dado um número n ,
- Conte a quantidade de cada dígito em n e adicione 1 a cada contagem
- Tome a fatoração primária de n
- Contar a quantidade de cada dígito na fatoração primária de n , sem incluir números primos duplicados
- Crie uma nova lista multiplicando os respectivos elementos das listas das etapas 1 e 3
- Retorna a soma dessa lista
Por exemplo, 121 tem dois se 1
um 2
, então você obteria a seguinte lista da etapa 1:
0 1 2 3 4 5 6 7 8 9
1 3 2 1 1 1 1 1 1 1
A fatoração primária de 121 é 11 2 , que fornece a seguinte lista para a etapa 3:
0 1 2 3 4 5 6 7 8 9
0 2 0 0 0 0 0 0 0 0
Observe como não contamos o expoente. Eles se multiplicam para obter:
0 1 2 3 4 5 6 7 8 9
0 6 0 0 0 0 0 0 0 0
E a soma desta lista é 6.
Casos de teste
1 -> 0
2 -> 2
3 -> 2
4 -> 1
5 -> 2
10 -> 2
13 -> 4
121 -> 6
Notas
- As brechas padrão são proibidas.
- A entrada e a saída podem estar em qualquer formato razoável.
- Você deve deixar uns (ou zeros na etapa 3) na lista para dígitos que não apareceram no número.
- Isso é código-golfe , então a solução mais curta em bytes vence.
232792560
->[2,1,4,2,1,2,2,2,1,2]
(etapa 1);2*2*2*2*3*3*5*7*14*17*19
(passo 2); então[0,5,1,2,0,1,0,2,0,1]
(passo 3); então[0,5,4,4,0,2,0,4,0,2]
(Etapa 4); e, portanto, deve produzir21
.Respostas:
Gelatina , 16 bytes
Experimente online!
Desenvolvido independentemente e não exatamente o mesmo que a outra solução Jelly .
Explicação
Eu vou usar
242
como exemplo de entrada.fonte
Geléia ,
1817 bytes-1 byte graças a caird coinheringaahing e H.PWiz (evite emparelhar os dois vetores)
Um link monádico que pega um número inteiro positivo e retorna um número inteiro não negativo.
Experimente online!
Quão?
fonte
APL (Dyalog) ,
4341 bytesExperimente online!
Quão?
r←⎕
- entrada emr
3pco
- fatores primos∪
- único⎕D,r
-r
anexado com0-9
⍕¨
- formate os fatores e o intervalo precedido⎕D∘.=
- comparação cartesiana com todos os elementos da string0123456789
+/¨
- soma cada linha das duas tabelas formadas×/
- multiplique os dois vetores restantes+/
- soma o último vetor formadofonte
Pip , 44 bytes
Recebe entrada do argumento da linha de comando. Experimente online!
fonte
Python 2 ,
136127 bytesExperimente online!
Créditos
fonte
-~
eu estava sempre um pouco confuso sobre isso. E eu preciso começar a lembrar da<1
coisa. Obrigado pela ajuda.-~
e coisas relacionadas.