A sequência de reversão e adição (RTA) é uma sequência obtida adicionando um número ao seu reverso e repetindo o processo no resultado. Por exemplo,
Assim, a sequência RTA de 5 contém 10, 11, 22, 44, 88, 176, etc.
A raiz RTA de um número é o menor número que é igual a ou dá origem a em sua sequência RTA.
Por exemplo, 44 é encontrado na sequência RTA de 5, 10, 11, 13, 22, 31, etc. Desses, 5 é o menor e, portanto, RTAroot (44) = 5.
72 não faz parte da sequência RTA de nenhum número e, portanto, é considerada sua própria raiz RTA.
A entrada é um número inteiro positivo em um intervalo que seu idioma pode manipular naturalmente.
Saída é a raiz RTA do número fornecido, conforme definido acima.
Casos de teste
Input
Output
44
5
72
72
132
3
143
49
1111
1
999
999
OEIS relacionado: A067031 . A saída será um número dessa sequência.
Braquilog ,
2422 bytes{{
e}}
Explicação
desculpe pela explicação vacilante, este é o melhor que eu poderia inventar
Experimente online!
fonte
{|↰₁}
lá é simples, mas brilhante. Bom trabalho!Haskell ,
5957 bytes-2 bytes graças a user1472751 (usando um segundo em
until
vez de compreensão de lista &head
)!Experimente online!
Explicação
Isso avaliará
True
para qualquer raiz RTA:O termo
(+)<*>read.reverse.show
é uma versão em golfe deque adiciona um número a si próprio invertido.
A função
until
se aplica repetidamente(+)<*>read.reverse.show
até exceder nosso objetivo.Envolvendo tudo isso em mais uma
until
partida1
e adição de 1,(+1)
você encontrará a primeira raiz do RTA.Se não houver uma raiz RTA adequada
n
, eventualmente chegaremos an
ondeuntil
não se aplica a função desde entãon<=n
.fonte
until
o loop externo: TIO05AB1E , 7 bytes
Usando a nova versão do 05AB1E (reescrita no Elixir).
Código
Experimente online!
Explicação
fonte
j
tem um significado especial em um ambiente recursivo? Eu só sabia sobre o₁
meio₆
e oλ
próprio dentro do ambiente recursivo. Há mais alguma coisa além dissoj
? EDIT: Ah, eu vejo algo sobre isso£
também no código fonte . Para onde é usado?j
essencialmente verifica se o valor de entrada está na sequência.£
garante que ele retorne os primeiros n valores da sequência (o mesmo queλ<...>}¹£
).Geléia ,
1211 bytesGraças a @ JonathanAllan por jogar fora um byte!
Experimente online!
Como funciona
fonte
Ruby,
6657 bytesExperimente online!
Função recursiva que "desfaz" repetidamente a operação RTA até chegar a um número que não pode ser produzido por ela e retorna o mínimo.
Em vez de usar
filter
, que é longo, eu simplesmentemap
ultrapassava o intervalo de 1 ao número. Para cada m nesse intervalo, se m + rev (m) é o número, chama a função recursivamente em m ; caso contrário, ele retornará n . Isso remove a necessidade de afilter
e nos fornece um caso base de f (n) = n gratuitamente.Os destaques incluem salvar um byte com
Integer#digits
:O último seria um byte mais curto, mas, infelizmente, Ruby analisa números começando com
0
octal.fonte
Python 2 , 70 bytes
Experimente online!
fonte
Pitão , 12 bytes
Confira uma suíte de testes!
Surpreendentemente rápido e eficiente. Todos os casos de teste executados ao mesmo tempo levam menos de 2 segundos.
Como funciona
fonte
05AB1E , 13 bytes
Experimente online!
Explicação
fonte
global_counter
..>>.JavaScript (ES6), 61 bytes
Experimente online!
Comentado
fonte
05AB1E ,
211615 bytes-1 byte graças a @Emigna .
Experimente online.
Explicação:
fonte
Carvão , 33 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Entradaq .
Atribuir2 q para h para que o loop comece.
Repita enquantoh > q :
empurre uma seqüência nula simulada paravocê aumentando assim seu comprimento e atribua o comprimento resultante a h ;
repita enquantoh < q :
adicione o reverso deh para h .
Imprima o comprimento final devocê qual é a raiz desejada.
fonte
MATL , 17 bytes
Experimente online!
Explicação
fonte
:!`tG=~yV2&PU*+tG>~*tXzG=A~]f1)
Experimente online!Java 8, 103 bytes
Experimente online.
Explicação:
A reversão aritmética do número inteiro é 1 byte mais longo ( 104 bytes ):
Experimente online.
fonte
C (GCC) ,
12010099 bytesExperimente online!
Dada a entrada
i
, verifica todos os números inteiros dei
0 a uma sequência contendoi
.i
é o valor de entradao
é o valor de saída (a raiz mínima encontrada até o momento)a
é o número inteiro atual sendo verificadob
é o elemento atual dea
sequência dec
ed
são usados para adicionarb
ao seu reversofonte
-DL=for
você economizaria 2 bytes.i=o;
se usar-O0
, economizando 5 bytes.Japonês ,
161511 bytesTente
fonte
Physica , 57 bytes
O crédito para o método vai para a maçaneta da porta .
Experimente online!
fonte
C (gcc) , 89 bytes
Eu corro cada sequência em [1, n ) até obter uma correspondência; zero é especial porque não termina.
Experimente online!
fonte