Todos deberían estar familiarizados con la secuencia de Conway (también conocida como 'mirar y decir') por ahora:
1
11
21
1211
111221
312211
etc
También puede comenzar por cualquier número arbitrario como punto de partida. Dejar f(s)ser el siguiente elemento de la secuencia. Ahora por cada dado sque podemos encontrar f(s). Lo contrario no es tan trivial: no es yposible encontrar al predecesor de sesa manera f(s) = y. Por ejemplo, porque y = 1no podemos encontrar un predecesor. Pero si ytiene una longitud uniforme , puede dividirla en pares de dígitos que describen cada parte de un predecesor:
513211 divides in 51,32,11
so: 51 comes from 11111
32 comes from 222
11 comes from 1
put together: 111112221
Entonces, de esta manera, podemos definir un predecesor único para cada ylongitud uniforme.
Nota : El 'predecesor' sdefinido de esta manera generalmente NO satisface f(s) = y.
Objetivo
Escriba un fragmento de función / programa que acepte una cadena de dígitos como entrada que
- calcula el siguiente elemento de la secuencia de Conway si la longitud de la cadena de entrada es impar
- calcula el predecesor de la cadena de entrada como se definió anteriormente si la longitud de la cadena de entrada es par .
El código más corto en bytes gana.
Preguntas recientes basadas en las secuencias de mirar y decir:
11111111111111ser? Según su especificación, lo sería 1111111. Debe modificar su especificación para definir una respuesta razonable para esto.
11111111111111simplemente no tiene predecesor. Es una entrada ilegal.
513111se divide en51,32y11?