Estou falando sobre essa questão , dê uma olhada se estiver um pouco confuso.
Tarefa principal
Sua tarefa é produzir números inteiros concatenados, em ordem decrescente, mas aumentando o número inteiro máximo toda vez que você clicar 1
(para esta pergunta, 1 será considerado um número primo) . Embora isso não pareça diferente da primeira pergunta, aqui vem a parte complicada: todos os números emitidos podem ser apenas números primos . Eles serão agrupados em uma única sequência, sem espaços ou novas linhas. Sua entrada também será um número primo .
Exemplo:
1
21
321
5321
75321
1175321
Valid output:
1213215321753211175321
Entrada
Seu código pode receber apenas uma entrada: a mais alta prime a ser impressa. Esta entrada pode vir de qualquer lugar (gráfica, STDIN). Você tem certeza de que a entrada é um número primo.
Resultado
Você terá que emitir o número resultante. Você pode obter esse número mantendo a contagem regressiva, conte apenas o número se for primo e conecte todos os resultados a um número. O último número "linha" (por exemplo 7, 5, 3, 2, 1
) deve ser impresso totalmente. A saída pode ser qualquer coisa (números, seqüências de caracteres, gráficos), desde que seja legível. O mesmo padrão Regex para verificar seus casos de teste se aplica:
^(\D*(\d)+\D*|)$
Se sua saída não corresponder a esse padrão, seu código é inválido.
Regras
- A entrada é garantida como primária, não inclua manipulação de erros, a menos que você queira / precise.
- A saída pode ser apenas um número totalmente conectado, portanto, não é dividida por nada, nem mesmo novas linhas.
- Seu algoritmo não deve verificar a primeira instância de
N
exibição (por exemplo, o17
in1175321
), mas a primeira instânciaN
como o número real. - Sua entrada é garantida como positiva, não adicione manipulação a menos que você queira / precise.
Casos de teste
Input: -2, 0
Output: Any, or none (number isn't positive)
Input: 9
Output: Any, or none (number isn't prime)
Input: 1
Output: 1
Input: 7
Output: 121321532175321
Input: 23
Output: 1213215321753211175321131175321171311753211917131175321231917131175321
Vencedora
Isso é código-golfe , então o autor do código com o menor comprimento em bytes vence!
1
seja o principal por definição.1
contradiz diretamente as especificações, o que " garante " que o número de entrada será primo. 2. A especificação de saída parece conter múltiplas contradições e ambiguidades. " O último número" linha "(por exemplo, 7, 5, 3, 2, 1) deve ser impresso completamente " - para que os outros não? " O mesmo padrão Regex para verificar seus casos de teste se aplica ", mas " A saída pode ser apenas um número totalmente conectado e, portanto, não dividido por nada " contradiz esse regex. Mas o regex é claramente desonesto de qualquer maneira, porque permite a string vazia, e não há entrada que possa dar isso.Respostas:
Geléia , 9 bytes
Experimente online!
Como funciona
fonte
V
em uma lista.)Processando, 161 bytes
Uma função faz a verificação de primalidade, a outra faz a impressão. Chame por
t(7)
Ungolfed
A primeira função faz a verificação de primalidade. Ele retorna um em
int
vez de um,boolean
pois dessa maneira mais bytes são salvos. (emint
vez deboolean
, em0
vez defalse
, em1
vez detrue
)A segunda função imprime a string. Ele itera através de cada número, se não for um primo, pule para a próxima iteração. Se for um primo, continua até a impressão dentro de outro
for
loop. Novamente, se o número é primo, então o imprimimos, caso contrário não.fonte
Gelatina , 12 bytes
Experimente online!
Se não tivesse sido por
1
s, meu código teria apenasÆRÆRUVV
7 bytes.Explicação aprimorada:
O cara irlandês (chamado Dennis?) De alguma forma me superou lol.
fonte
05AB1E , 19 bytes
Experimente online!
Explicação
fonte
DpÏ
afirmação. Bom trabalho!Braquilog , 17 bytes
Experimente online!
Não consigo ficar mais curto do que isso ...
Explicação
fonte
Linguagem do GameMaker, 169 bytes
Função principal (68 bytes)
Função p (46 bytes)
Função q (55 bytes)
fonte
MATL , 15 bytes
Experimente online!
fonte
Perl 6 , 41 bytes
( Experimente online. )
Explicação:
1, |grep(*.is-prime, 2..$_)
: Sequência de 1 e números primos ...(1 2 3 5)
[,] ...
: Reduza ("dobre") o operador de vírgula ...(1 2 3 5)
[\,] ...
: Com resultados intermediários ( redução triangular ) ...((1) (1 2) (1 2 3) (1 2 3 5))
[\R,] ...
: Aplique o meta-operador de reversão à vírgula ...((1) (2 1) (3 2 1) (5 3 2 1))
[~] flat ...
: Remova o aninhamento de lista e dobre o operador concat de cadeia ...1213215321
(Isso se baseia na minha resposta para o desafio anterior .)
fonte
Mathematica, 61 bytes
Função sem nome, usando um argumento inteiro e retornando uma string. (Se a entrada não for um primo, apenas o arredondará para o primo mais próximo; se a entrada não for positiva, ela fingirá que é 1.)
Essa implementação usa o truque desagradável da resposta de Martin Ender para o desafio anterior semelhante (quem disse que esse cachorro velho não pode aprender novos truques?): Abusar
<>
de achatar uma lista aninhada de números inteiros.A lista aninhada em questão começa gerando uma lista aninhada semelhante à da resposta, com o comprimento apropriado (fornecido por
PrimePi@#
, o número de primos até e incluindo a entrada); entãoPrime
é aplicado a todos os elementos. Por exemplo, para a entrada5
que é o terceiro primo, o códigoRange[Range@PrimePi@#,0,-1]
produz{{1,0},{2,1,0},{3,2,1,0}}
e a aplicaçãoPrime
a cada elemento produz{{2,Prime[0]},{3,2,Prime[0]},{5,3,2,Prime[0]}}
desde o primeiro, segundo e terceiro primos são 2, 3 e 5, respectivamente. Sinto-me orgulhoso por ter conseguido adicionar ainda mais erros à abordagem de Martin Ender - o Mathematica reclama toda vez que escrevePrime[0]
.Prime[0]
não é uma coisa, mas tudo bem:/.Prime@0->1
transforma todos eles em1
s. E também queremos um1
na frente, por isso substituímos a""
resposta de Martin Ender por simplesmente1
, o que realmente salva um byte.fonte
PHP, 72 bytes
Run wit
-r
demolir
fonte
Pitão - 12 bytes
Conjunto de Teste .
fonte