Introdução
No mundo estranho dos números inteiros, os divisores são como ativos e costumam chamar de "ricos" os números que têm mais divisores do que a reversão, enquanto chamam de "pobres" os que têm menos divisores do que a reversão.
Por exemplo, o número possui cinco divisores: , enquanto sua reversão, , possui apenas quatro: .
Então é chamado de número rico , enquanto um número ruim .
Dada essa definição, podemos criar as duas seguintes seqüências inteiras de números ricos e pobres:
(here we list the first 25 elements of the sequences)
Index | Poor | Rich
-------|------|-------
1 | 19 | 10
2 | 21 | 12
3 | 23 | 14
4 | 25 | 16
5 | 27 | 18
6 | 29 | 20
7 | 41 | 28
8 | 43 | 30
9 | 45 | 32
10 | 46 | 34
11 | 47 | 35
12 | 48 | 36
13 | 49 | 38
14 | 53 | 40
15 | 57 | 50
16 | 59 | 52
17 | 61 | 54
18 | 63 | 56
19 | 65 | 60
20 | 67 | 64
21 | 69 | 68
22 | 81 | 70
23 | 82 | 72
24 | 83 | 74
25 | 86 | 75
... | ... | ...
Notas :
- como "reversão" de um número, queremos dizer seu reverso digital , ou seja, ter seus dígitos na base 10 invertidos. Isso significa que os números que terminam com um ou mais zeros terão uma reversão "mais curta": por exemplo, a reversão de
1900
é,0091
portanto,91
- intencionalmente, excluímos os números inteiros com o mesmo número de divisores que sua reversão, ou seja, os pertencentes à OEIS: A062895
Desafio
Considerando as duas seqüências definidas acima, sua tarefa é escrever um programa ou função que, dado um número inteiro n
(você pode escolher 0 ou 1 indexado), retorne o n-ésimo número pobre e n-ésimo número.
Entrada
- Um número inteiro (
>= 0
se 0-indexado ou>= 1
se 1-indexado)
Resultado
- 2 inteiros, um para a sequência ruim e outro para a sequência rica, na ordem em que você preferir, desde que seja consistente
Exemplos :
INPUT | OUTPUT
----------------------------------
n (1-indexed) | poor rich
----------------------------------
1 | 19 10
18 | 63 56
44 | 213 112
95 | 298 208
4542 | 16803 10282
11866 | 36923 25272
17128 | 48453 36466
22867 | 61431 51794
35842 | 99998 81888
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta com as regras de E / S padrão , para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código (ou seja, TIO ).
- Além disso, é altamente recomendável adicionar uma explicação para sua resposta.
2
. Para isso, consulte o Corolário 1.4 no final do documento a seguir, comn
igual a19, 199, 1999, ...
: m-hikari.com/ijcms-password/ijcms-password13-16-2006/…Respostas:
05AB1E , 16 bytes
Experimente online!
Indexado 0 [rico, ruim]:
Talvez alguém possa explicar por que essa versão parece não terminar, mas quando clico em "cancelar execução" no TIO, ela termina com a resposta correta ou, se você esperar 60 segundos, obtém a resposta correta. Para uma versão que termina "corretamente", você pode usar:
T+nL.¡ÂÑgsÑg.S}¦ζsè
+3 bytesfonte
∞n5è
, só calcularia os 6 primeiros números. Eu acho que quando esses tipos de construções de loop / agrupamento / divisão entram em cena, a avaliação preguiçosa falha e tenta calcular todos os itens antes de retornar.€g
.. Eu o usei com tanta frequência. Teria salvo um byte aqui com a alternativa (agora igual byte)‚рgÆ.±
. Boa resposta embora! Ótimo uso de.¡
!δg
lol.JavaScript (ES6),
121 115 113111 bytesA entrada é indexada em 1. Saídas como
[poor, rich]
.Experimente online!
Comentado
Função auxiliar
a Principal
fonte
Gelatina , 22 bytes
Experimente online!
Explicação
fonte
Wolfram Language (Mathematica) , 152 bytes
Experimente online!
Se a conjectura for verdadeira, essa solução de 140 bytes também funcionará
Experimente online!
Aqui está o enredo ruim versus rico
fonte
a(27635)= {70003, 65892}
Perl 6 , 81 bytes
Experimente online!
* > *
é uma função anônima que retorna true se o primeiro argumento for maior que o segundo. Da mesma forma para* < *
. O primeiro selecionará números que pertencem à sequência rica, o último selecionará aqueles que pertencem à sequência ruim.(* > *, * < *).map(-> &c { ... })
produz um par de sequências infinitas, cada uma baseada em uma das funções do comparador: a sequência rica e a sequência ruim, nessa ordem.»[$_]
indexa as duas seqüências usando$_
, o argumento para a função de nível superior, retornando uma lista de dois elementos contendo o$_
th membro da sequência rich e o$_
th membro da sequência pobre.grep $_ %% *, 1..$_
produz uma lista dos divisores de$_
.map { grep $_ %% *, 1..$_ }, $_, .flip
produz uma lista de dois elementos dos divisores de$_
e os divisores de$_
com seus dígitos invertidos ("invertido").[[&c]]
reduz essa lista de dois elementos com a função comparadora&c
(maior que ou menor que), produzindo um valor booleano indicando se esse número pertence à sequência rica da sequência ruim.fonte
1..$_
pode ser^$_
. Você também pode mover o[$_]
para dentro da função de mapa. 78 bytesPython 2 ,
142141 bytesExperimente online!
Alternativa não recursiva (muito semelhante às outras respostas do Python)
Python 2 , 143 bytes
Experimente online!
fonte
Python 2 ,
158153 bytes-2 bytes graças a shooqie
Experimente online!
A entrada é indexada em 0. Saídas como
poor rich
.fonte
+=[c]
vez de.append(c)
trabalhar?Rubi , 128 bytes
A entrada é indexada a zero . Resultados como [ruim, rico].
Explicação
Experimente online!
fonte
Perl 6 , 76 bytes
Experimente online!
Não vi a resposta Perl 6 de Sean , mas isso funciona de uma maneira diferente. Observe que eu codifiquei o upperbound como
n*3+99
, o que provavelmente não é estritamente correto. No entanto, eu poderia substituir o*3
com³
para não bytes extras, o que tornaria o programa muito menos eficiente, se mais correto.fonte
Python 2 , 152 bytes
Experimente online!
Acaba sendo bem parecido com a resposta de Rod . Retorna a
n
tupla rica e indexada a zero .fonte
Ícone ,
180175 bytesExperimente online!
fonte
APL (Dyalog Unicode) , 34 bytes
Experimente online!
Agradeço a Adám e à ngn por me ajudarem a jogar golfe nessa monstruosidade.
O TIO atinge o tempo limite para os índices maiores (que exigem
⍳1e5
ou⍳1e6
), mas, com tempo e memória suficientes, a função termina corretamente.fonte
R ,
152137 bytes-12 bytes graças a Giuseppe -3 bytes graças a digEmAll
Experimente online!
T
é o número inteiro atualmente sendo tentado; os últimos números pobres e ricos são armazenados no vetorF
.A maneira mais curta que eu pude encontrar de reverter um número inteiro foi convertê-lo em dígitos na base 10 com aritmética modular e depois converter com potências de 10 invertidas, mas espero ser superado nesta e em outras frentes.
Explicação (da versão anterior e similar):
fonte
nchar
.log10
!JavaScript (Node.js) ,
190180 bytesSaídas como
[poor, rich]
.Experimente online!
Explicação
d(n)
FunçãoEsse auxiliar encontra o número de fatores que um número possui.
Função principal
fonte
C # (compilador interativo do Visual C #) , 221 bytes
Experimente online!
fonte