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 s
que podemos encontrar f(s)
. Lo contrario no es tan trivial: no es y
posible encontrar al predecesor de s
esa manera f(s) = y
. Por ejemplo, porque y = 1
no podemos encontrar un predecesor. Pero si y
tiene 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 y
longitud uniforme.
Nota : El 'predecesor' s
definido 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:
11111111111111
ser? Según su especificación, lo sería 1111111
. Debe modificar su especificación para definir una respuesta razonable para esto.
11111111111111
simplemente no tiene predecesor. Es una entrada ilegal.
513111
se divide en51
,32
y11
?