Desafío:
Cree un programa que tome la entrada de un entero positivo distinto de cero y genere los 4 números siguientes en la secuencia que se describe a continuación.
Nota: No es necesario verificar si la entrada es realmente un entero positivo distinto de cero
Secuencia:
Cada número en esta secuencia (aparte del primero, que es la entrada) estará compuesto de n dígitos, donde n es un número par. Si dividimos el número en n / 2 pares, para cada par, el primer dígito debería ser la cantidad de veces que el segundo dígito apareció en el número anterior
Explicación visual :
Considere este ejemplo "iniciador de secuencia" o entrada 6577
El siguiente número en la secuencia debería verse así 161527
porque la entrada tiene 1 "6", 1 "5" y 2 "7" s.
Si la entrada tiene demasiados dígitos (más de 9 de un solo dígito), no podrá obtener una salida correcta
Ejemplo: 111111111111
(12 1's) El
siguiente número en secuencia debe describir 12 1's. Por lo tanto, lo dividimos en 9 1 y 3 1 (suma 9 + 3 = 12)
Siguiente número:9131
Debe iterar 4 veces para la entrada y generarla (ya sea devolver una lista / matriz de 4 enteros o generarla separándolos con un espacio, las nuevas líneas también son aceptables)
"El número se puede escribir de muchas maneras, ¿cómo lo escribo?" :
Si lo piensa, la entrada de ejemplo 6577
también se puede escribir como 271516 (dos 7, uno 5, uno seis). Sin embargo, esta es una salida no válida. Debe iterar el número de izquierda a derecha. Por lo tanto, 161527. Si fuera 7657
usted, iteraría la cantidad de 7, luego la cantidad de 6 y luego la cantidad de 5, por lo tanto, la salida válida sería271615
Ejemplo de E / S:
Entrada: 75
Salida:1715 211715 12311715 4112131715
Entrada: 1
Salida:11 21 1211 3112
Entrada: 111111111111
(12 1's)
Salida:9131 192113 31191213 23411912
Esto es diferente a la pregunta "Di lo que ves", porque las secuencias son diferentes: https://oeis.org/A005150 <- Este devuelve números como este:
Entrada: 1211 Salida: 111221
Mientras que la secuencia que estoy pidiendo haría
Entrada: 1211 Salida: 3112
Las dos secuencias son diferentes y requieren algoritmos diferentes.
Mi secuencia solicitada: https://oeis.org/A063850 Secuencia
"Posible duplicado": https://oeis.org/A005150
Especificación importante:
Como no era lo suficientemente claro para algunas personas que intentaron responder a esta pregunta, la salida correcta para k caracteres donde k> 9 no es "kc" (donde c es char) sino 9c (k-9) c etc. Por lo tanto, salida correcta para 12 1 no es 121
(12 1) sino 9131
(9 1, (12-9) 1 y así sucesivamente)
Si tiene dudas, su código es incorrecto si alguna vez emite un número con una cantidad impar de dígitos (como 121), debería tener la salida de números de dígitos pares debido a la naturaleza de la secuencia.
Este es el código de golf, por lo tanto, el código con menos bytes gana.
fuente
1111111111111111111
(19 1's )23411912
lugar de23411219
?Respuestas:
PowerShell ,
111104bytesPruébalo en línea!
fuente
$i
en su bucle, ¿por qué no simplemente bucle directamente como$z=$args;0..3|%{...
$args
(y originalmente pensé que lo usaría$i
). Iba a medirlo pero luego la pregunta se cerró.Python 2 , 116 bytes
Pruébalo en línea!
fuente
1111111111111111111
es incorrecta. Debería ser919111
pero da919121
11
salida debería ser21 1211 3112 132112
, no entiendo por qué sale111
como la primera iteración que hace que toda la cadena vaya mal05AB1E ,
302321 bytesPruébalo en línea!
Explicación
fuente
Mathematica, 117 bytes
Parece que no debería necesitar ser tan largo.
fuente
C # 246 bytes
Sin golf:
Pruébelo aquí (escriba la entrada en el marco inferior una vez que se compila y presione ENTRAR)
fuente
Jalea , 27 bytes
Pruébalo en línea!
El sucesivo
€
s no pueden anidarse porque las cadenas no pueden anidarse.Anidamiento con enlace separado: 27 bytes.
Imprimir en lugar de acumulación: 27 bytes.
Explicación
fuente
PHP, 141 bytes
Pruébalo en línea!
fuente