Introdução
Inverter e adicionar é tão simples quanto parece, pegue n
e adicione aos seus dígitos na ordem inversa. (por exemplo, 234 + 432 = 666).
Se você aplicar esse processo repetidamente, alguns números atingirão um número primo e outros nunca atingirão um primo.
Exemplo
Eu tenho atualmente
11431 rep.
11431 is not prime
11431 + 13411 = 24842 which is not prime
24842 + 24842 = 49684 which is not prime
49684 + 48694 = 98378 which is not prime
98378 + 87389 = 185767 which is prime!
Este número atinge um primo
Por outro lado, qualquer múltiplo de 3 nunca alcançará um primo, porque todos os múltiplos de 3 têm uma soma de dígitos que é um múltiplo de 3 e vice-versa. Portanto, reverter e adicionar um múltiplo de 3 sempre resultará em um novo múltiplo de 3 e, portanto, nunca será um primo.
Tarefa
Pegue um número inteiro positivo n
e determine se a inversão e a adição repetidas resultarão em um número primo. Emita um valor verdadeiro ou falso. Qualquer verdade para atinge um valor primo e falso para não, ou o contrário é aceitável.
Os números primos serão considerados como atingindo um número primo em zero iterações.
Isso é código-golfe, então tente fazer o seu código o mais curto possível.
Casos de teste
Verdadeiro para atinge um primo falso para nunca atinge um primo
11 -> True
11431 -> True
13201 -> True
13360 -> True
13450 -> True
1019410 -> True
1019510 -> True
22 -> False
1431 -> False
15621 -> False
14641 -> False
Sugestão
Enquanto escrevia esse desafio, descobri um truque interessante que facilita muito esse problema. Não é impossível sem esse truque e também não é trivial, mas ajuda. Eu me diverti muito descobrindo isso, então deixarei em um spoiler abaixo.
A reversão e adição repetidas sempre atingem um múltiplo de 11 em 6 iterações ou menos. Se não atingir um primo antes de atingir um múltiplo de 11, nunca atingirá um primo.
fonte
Respostas:
Ruby ,
84 79 7774 bytesExperimente online!
fonte
Haskell , 65 bytes
f
pega umInteger
e retorna umBool
.True
significa que atinge um nível máximo.Experimente online!
Infelizmente, o teste inicial curto, mas ineficiente, significa que os
True
casos de teste do OP, que não11
são grandes demais para serem finalizados. Mas, por exemplo, 11432 é umTrue
caso que termina.Você também pode tentar este com mais três bytes, para o qual o TIO pode concluir todos os
True
casos de teste:Experimente online!
Os testes principais das duas versões quebram em 1, mas acontece que chega a um prime (2) de qualquer maneira.
Caso contrário, notei a mesma coisa que GB no spoiler da submissão do Ruby:
fonte
Python 2,
123110 bytesEconomizou 13 bytes graças a Ørjan Johansen e Wheat Wizard !
Retorna 1 se atingir um prime, 0 se não atingir. Experimente online!
fonte
Python 2 ,
787069 bytesExperimente online!
Explicação
Este programa baseia-se no fato de que
Este programa é um lambda recursivo com comparativos lógicos em circuitos. Ele primeiro verifica se n é primo.
Se isso é verdade, retornamos verdadeiro.
Se for falso, verificamos se é um múltiplo de 11.
Se false, retornamos false, caso contrário, retornamos o resultado de
f
na próxima iteraçãofonte
Gelatina , 11 bytes
Experimente online!
fonte
S
pode ser umaT
.RD$+$
também pode ser+RD$$
ouRD+<newline>Ç
(todas as modificaes triviais)S
porque tem menos chance de mostrar algo> 1. Não háRD
, apenasṚḌ
, e eu escolhiṚḌ$+$
para que eu pudesse organizá-lo melhor.S
; Eu deveria ter escolhido isso de novoT
, mas isso é principalmente para o interesse de todos os outros.05AB1E ,
1413 bytesEDIT : salvou um byte porque a entrada é reutilizada se não houver elementos suficientes na pilha
Experimente online!
Usa a dica na pergunta
Como funciona
fonte
MATLAB,
8881 bytesfonte
JavaScript (ES6), 73 bytes
Retorna
0
outrue
.Comentado
Isso é baseado na fórmula do spoiler mágico descrita pelo Wheat Wizard.
Casos de teste
Eu removi as duas maiores entradas do snippet, pois elas levam alguns segundos para serem concluídas. (Mas eles também funcionam.)
Mostrar snippet de código
fonte
Mathematica, 45 bytes
fonte
Microsoft Sql Server,
826786 * bytes* Lembrei-me da função IIF que foi introduzida no Microsoft Sql Server 2012
Verifique on-line
A formatação mais elegante
fonte
/*true*/
e/*false*/
comentários?Geléia , 9 bytes
Experimente online!
Como funciona
fonte
PHP 114 bytes
Versão mais legível:
Experimente online!
Eu usei isso para contar bytes.
fonte