Deixe ser um número inteiro positivo consistindo de dígitos decimais . Seja outro número inteiro positivo.
Para efeitos deste desafio, nós chamamos um imitador de se existe pelo menos uma lista de números inteiros positivos modo que:
e são chamadascopycats recíprocas, se é um imitador de e é um imitador de .
Exemplo
e são imitadores recíprocos porque:
e:
O desafio
Dados dois números inteiros positivos e , sua tarefa é imprimir ou retornar um valor verdadeiro se e forem imitadores recíprocos ou, caso contrário, um valor falso.
Esclarecimentos e regras
- Você pode pegar e em qualquer formato razoável e inequívoco (por exemplo, números inteiros, seqüências de caracteres, listas de dígitos, ...)
- e podem ser iguais. Se um número é um copiador recíproco de si mesmo, ele pertence aoA007532.
- Em vez de valores verdadeiros / falsos, você pode retornar dois valores consistentes distintos .
- Para e , seu código deve ser concluído em menos de um minuto . Se estiver demorando muito para obter valores mais altos, ele deve ser capaz de resolvê-los em teoria.
- Isso é código-golfe .
Casos de teste
Truthy:
1 1
12 33
22 64
8 512
23 737
89 89
222 592
526 853
946 961
7 2401
24 4224
3263 9734
86 79424
68995 59227
32028 695345
Falsy:
1 2
3 27
9 24
24 42
33 715
33 732
222 542
935 994
17 2401
8245 4153
code-golf
decision-problem
integer
Arnauld
fonte
fonte
17 2401 -> false
. Estou quase tropeçando nisso.Respostas:
Braquilog , 19 bytes
Experimente online!
Saídas
true.
oufalse.
Explicação
fonte
2401
continha um0
que não funcionou com a maneira como eu verifiquei queI
era estritamente positivo (porque eu mapeado-lo em ambosI
e o dígito para salvar bytes)Casca , 17 bytes
Experimente online! Conclui todos os casos de teste abaixo de 1000 em cerca de 11 segundos.
Explicação
Por que funciona
Se tivermosB=dp11+⋯+dpnn em que o di são dígitos e pi são números inteiros positivos, em seguida, dpii≤B para todos os i , ou equivalentemente pi≤logdiB . Podemos ignorar o caso di≤1 , pois a exponenciação de 0 ou 1 não o altera. No meu programa, o espaço de pesquisa é1≤pi≤B−−√ (para cumprir com a restrição de tempo; eu usaria1≤pi≤B de outra forma), de modo que se tem⌊logdiB⌋≤⌊B−−√⌋ , então está tudo bem. Sedi≥3 , isso vale para todos os números naturaisB , então o único caso perigoso édi=2 . Temos⌊log2B⌋>⌊B−−√⌋ apenas paraB=8 . Nesse caso,23=8 , mas a pesquisa considera apenas os expoentes1 e2 . Se o outro número númeroA contiver o dígito2 , também possui outros dígitos diferentes de zero (portanto, o expoente de2 não pode ser3 na soma) ouA=2⋅10k para algunsk . No último caso,A não é uma potência de8 , portanto, não pode ser um imitador deB de qualquer maneira, e o programa retornará corretamente um valor falso, independentemente da outra computação.
fonte
d
aceita o argumento implícito. Esclarei isso na explicação. 2. Adicionei um argumento para a correção do programa.Python 2 , 102 bytes
Experimente online!
fonte
05AB1E ,
2622 bytesToma a entrada como uma lista (ou seja
[526,853]
).Experimente online ou verifique a maioria dos casos de teste no intervalo
[1,999]
.Semelhante à minha antiga resposta abaixo, exceto que a
[1,n]
lista é codificada[1,100]
e cria a lista cartesiana duas vezes, uma vez para cada mapeamento de entrada, que é o principal gargalo em termos de desempenho.Resposta antiga de 26 bytes, melhor para o desempenho:
Nesta versão, troquei alguns bytes para melhorar o desempenho, para que ele possa ser executado
[1,1000]
com facilidade. Os casos de teste que contêm números no intervalo[1,9999]
são realizados em cerca de um segundo no TIO. Casos de teste no intervalo de[10000,99999]
10 a 15 segundos no TIO. Acima disso, o tempo limite será excedido.Experimente online ou verifique todos os casos de teste com números no intervalo
[1,9999]
.Explicação:
fonte
Haskell , 77 bytes
Experimente online!
fonte
Perl 6 ,
87 8469 bytes-15 bytes graças a nwellnhof!
Experimente online!
Bloco de código anônimo que retorna True ou False.
Explicação:
fonte
JavaScript (Node.js) ,
1169289868377 bytesExperimente online!
Espere entrada como
(A)(B)
.fonte
J , 56 bytes
Experimente online!
Yay, definição explícita aninhada!
Como funciona
fonte
Python 2 ,
149147143139132118108107106105 bytesExperimente online!
-4 bytes, graças a Vedant Kandoi
fonte
>0
pode ser removido.not a
:a<1
.b==0
:b<1
b<0
não funcionar #J, 68 bytes
Eu pensei que J teria um desempenho muito bom aqui, mas acabou sendo mais difícil do que eu esperava e adoraria sugestões para mais golfe ...
Experimente online!
NOTA: subtraímos 3 caracteres da contagem de TIOs, pois
f=.
na função principal não contadestroçado
fonte