Desafio:
Crie um programa que receba a entrada de um número inteiro diferente de zero positivo e produza os 4 números seguintes na sequência descrita abaixo.
Nota: Não é necessário verificar se a entrada é realmente um número inteiro diferente de zero.
Seqüência:
Todo número nesta sequência (exceto o primeiro, que é a entrada) deve ser composto por n dígitos, onde n é um número par. Se dividirmos o número em n / 2 pares, para cada par, o primeiro dígito deve ser a quantidade de vezes que o segundo dígito apareceu no número anterior
Explicação visual :
considere este exemplo "iniciador de sequência" ou entrada 6577
O próximo número na sequência deve se parecer com este 161527
Porque a entrada possui 1 "6", 1 "5" e 2 "7" s.
Se a entrada tiver muitos dígitos (mais de 9 de um único dígito), não seria possível obter uma saída correta.
Exemplo: 111111111111
(12 1's) O
próximo número na sequência deve descrever 12 1's. Assim, dividimos em 9 1 e 3 1 (soma 9 + 3 = 12)
Próximo número:9131
Você deve iterar 4 vezes para a entrada e produzi-la (retorne uma lista / matriz de 4 números inteiros ou produza-os separando-os com um espaço, novas linhas também são aceitáveis)
"O número pode ser escrito de várias maneiras, como eu o escrevo?" :
Se você pensar bem, a entrada de exemplo 6577
também pode ser escrita como 271516 (dois 7's, um 5, um seis). No entanto, esta é uma saída inválida. Você deve repetir o número da esquerda para a direita. Assim, 161527. Se fosse, 7657
você repetiria a quantidade de 7, então a quantidade de 6 e a quantidade de 5, portanto a saída válida seria271615
Exemplo de E / S:
Entrada: 75
Saída:1715 211715 12311715 4112131715
Entrada: 1
Saída:11 21 1211 3112
Entrada: 111111111111
(12
1s ) Saída:9131 192113 31191213 23411912
Isso é diferente da pergunta "Diga o que você vê", porque as seqüências são diferentes: https://oeis.org/A005150 <- Este retorna números como este:
Entrada: 1211 Saída: 111221
Enquanto a sequência que estou pedindo faria
Entrada: 1211 Saída: 3112
As duas sequências são diferentes e requerem algoritmos diferentes.
Minha sequência solicitada: https://oeis.org/A063850 Sequência
"Possível duplicado": https://oeis.org/A005150
Especificação importante:
Como não foi claro o suficiente para algumas pessoas que tentaram responder a essa pergunta, a saída correta para k chars em que k> 9 não é "kc" (onde c é char), mas 9c (k-9) c etc. 12 1 não é 121
(12 1), mas 9131
(9 1, (12-9) 1 e assim por diante)
Em caso de dúvida, seu código está errado se um número com dígitos ímpares (como 121), deve gerar números de dígitos pares devido à natureza da sequência.
Isso é código-golfe, portanto, codifique com menos bytes ganhos.
fonte
1111111111111111111
(19 1 do )23411912
vez de23411219
?Respostas:
PowerShell ,
111104 bytesExperimente online!
fonte
$i
em seu loop, porque não basta circuito diretamente como$z=$args;0..3|%{...
$args
(e originalmente pensei que iria usar$i
). Eu estava indo para medir, mas então a questão foi encerrada.Python 2 , 116 bytes
Experimente online!
fonte
1111111111111111111
está incorreta. Deveria ser,919111
mas dá919121
11
de saída deve ser21 1211 3112 132112
, eu não entendo porque ele gera111
como a primeira iteração que faz com que toda a cadeia de ir mal05AB1E ,
302321 bytesExperimente online!
Explicação
fonte
Mathematica, 117 bytes
Parece que não deve demorar tanto.
fonte
Bytes em C # 246
Ungolfed:
Experimente aqui (digite a entrada no quadro inferior uma vez compilada e pressione ENTER)
fonte
Gelatina , 27 bytes
Experimente online!
Os
€
s sucessivos não podem ser aninhados porque as cadeias não podem ser aninhadas.Aninhamento com link separado: 27 bytes.
Imprimir em vez de acumulação: 27 bytes.
Explicação
fonte
PHP, 141 bytes
Experimente online!
fonte