Vous devriez tous être familiarisés avec la séquence de Conway (alias la séquence «regarder et dire») :
1
11
21
1211
111221
312211
etc
Vous pouvez également commencer par n'importe quel nombre arbitraire comme point de départ. Soit f(s)l'élément suivant de la séquence. Maintenant, pour chaque donnée que snous pouvons trouver f(s). L'inverse n'est pas aussi trivial: il n'est pas pour tout ypossible de trouver le prédécesseur stel que f(s) = y. Par exemple, y = 1nous ne pouvons pas trouver un prédécesseur. Mais si ya une même longueur que vous pouvez le diviser en paires de chiffres qui décrivent chacun une partie d'un prédécesseur:
513211 divides in 51,32,11
so: 51 comes from 11111
32 comes from 222
11 comes from 1
put together: 111112221
Ainsi, de cette façon, nous pouvons définir un prédécesseur unique pour chaque ylongueur paire.
Remarque : Le «prédécesseur» sdéfini de cette façon ne satisfait généralement PAS f(s) = y.
Objectif
Écrivez un extrait de fonction / programme qui accepte une chaîne de chiffres en entrée qui
- calcule l'élément suivant de la séquence Conway si la longueur de la chaîne d'entrée est impaire
- calcule le prédécesseur de la chaîne d'entrée comme défini ci-dessus si la longueur de la chaîne d'entrée est paire .
Le code le plus court en octets gagne.
Questions récentes basées sur les séquences de look-and-say:
11111111111111? Selon vos spécifications, ce serait le cas 1111111. Vous devez modifier vos spécifications pour définir une réponse raisonnable à cela.
11111111111111n'a tout simplement aucun prédécesseur. C'est une entrée illégale.
513111divise en51,32et11?