Começando com um número inteiro positivo N , encontre o menor número inteiro N ' que pode ser calculado dividindo repetidamente N por um de seus dígitos (na base 10). Cada dígito selecionado deve ser um divisor de N maior que 1 .
Exemplo 1
A saída esperada para N = 230 é N '= 23 :
Exemplo 2
A saída esperada para N = 129528 é N '= 257 :
Cuidado com caminhos não ideais!
Poderíamos começar com 129528/9 = 14392 , mas isso não levaria ao menor resultado possível. O melhor que podemos fazer se primeiro dividirmos por 9 é:
Regras
- A entrada pode ser obtida em qualquer formato razoável (número inteiro, string, matriz de dígitos, ...).
- Isso é código-golfe , então a resposta mais curta em bytes vence!
Casos de teste
1 --> 1
7 --> 1
10 --> 10
24 --> 1
230 --> 23
234 --> 78
10800 --> 1
10801 --> 10801
50976 --> 118
129500 --> 37
129528 --> 257
8377128 --> 38783
655294464 --> 1111
code-golf
integer
optimization
division
Arnauld
fonte
fonte
Respostas:
Haskell ,
6761 bytesExperimente online!
Explicação:
read.pure<$>show n
transforma o número inteiro de entradan
em uma lista de dígitos.d
desta lista, verificamosd>1
emod n d<1
, ou seja, sed
dividen
.n
pord
e recursivamente aplicarf
:f$div n d
.n
.n
a ela e retornamosminimum
a lista.fonte
Gelatina , 8 bytes
Experimente online!
Versão alternativa, muito mais rápida, 9 bytes
Experimente online!
Como funciona
fonte
Python 2 , 59 bytes
Experimente online!
fonte
Ruby ,
5247 bytesCompetindo pelo grupo de idiomas não exóticos! (Observação: uma boa idéia, se não jogar golfe, é adicionar
.uniq
depois.digits
porque todos os ramos semelhantes têm resultados semelhantes)Experimente online!
Explicação
fonte
x<2|n%x?n:f[n/x]
para salvar dois ou três bytes (dependendo se você precisa de um|
ou dois)?value%zero
como divisão por zero, então o curto-circuito não funciona. Além disso,0
é um valor verdadeiro em ruby (os únicos valores de falsey são falsos e nulos).||
s?>0
, mas é a mesma contagem de caracteres.0
vem se você não estiver usando|
?Lisp comum , 136 bytes
Experimente online!
Versão legível:
fonte
Gelatina , 21 bytes
Experimente online!
fonte
Wolfram Language (Mathematica) , 44 bytes
-7 bytes graças a Misha Lavrov.
Experimente online!
fonte
⋂
caractereIntersection
. Mas existem casos grandes com os quais ele não pode mais lidar, porque fica sem geração de memóriaRange[#-1]
.Most@Divisors@#
vez deRange[#-1]
evitar o problema de memória, mas o resultado é 49 bytes .JavaScript (Firefox 30-57), 49 bytes
Versão compatível com ES6, 52 bytes:
Originalmente, tentei filtrar dígitos irrelevantes, mas acabou sendo um pouco mais longo, com 54 bytes:
fonte
Kotlin ,
10099 bytesEmbelezado
Teste
Edições
fonte
Gelatina , 15 bytes
Experimente online!
Devo admitir que a
߀
parte é emprestada da resposta de Erik . O resto é desenvolvido separadamente, em parte porque nem mesmo entendo como o restante dessa resposta funciona: P.Como funciona?
* Fico agradavelmente surpreso que
¡
funcione dessa maneira nas listas, porque seu significado normal é aplicado algumas vezes .Depois Dennis explicou por que
߀
não precisa de uma condicional, temos este 12 Byter , ou sua versão de 8 bytes: P.fonte
R ,
10198 bytesExperimente online!
Uma tonelada de bytes é usada para extrair os dígitos e quais são divididos
x
; talvez outra abordagem seja necessária.fonte
Excel Vba, 153 bytes
Primeiro código de golfe na única língua que conheço :( Não é exatamente favorável ao golfe ...
Ligue assim:
Não faço ideia de onde testar isso online.
fonte
And N > 0
por umN = S
em uma linha anterior. (Além disso, se eu tivesse uma maneira de testá-lo, meu primeiro instinto seria verificar se algum dos espaços pode ser removido.) #APL (Dyalog) , 33 bytes
Experimente online!
Quão?
⍎¨⍕⍵
- pegue dígitos den
1~⍨
- excluindo1
so/⍨
- filtrar por0=⍵|⍨o
- divisibilidaden
pelo dígito⍬≡...:⍵
- se vazio, retornen
⌊/
- caso contrário, retorne no mínimo∇¨
- recursão para cada número em⍵÷d
- a divisão den
cada um dos dígitos filtrados acimafonte
Perl 5, 87 + 1 (
-p
) = 88 bytesexperimente online
fonte
PHP, 120 bytes
Experimente online!
fonte
Pari / GP , 49 bytes
Experimente online!
fonte