Vocês já devem estar familiarizados com a sequência de Conway (também conhecida como sequência de "olhe e diga") :
1
11
21
1211
111221
312211
etc
Você também pode começar por qualquer número arbitrário como ponto de partida. Let f(s)Ser o próximo elemento da seqüência. Agora, para cada dado sque podemos encontrar f(s). O inverso não é tão trivial: não é ypossível encontrar o predecessor de stal maneira que seja possível f(s) = y. Por exemplo, porque y = 1não conseguimos encontrar um antecessor. Mas se ytiver um comprimento par, você pode dividi-lo em pares de dígitos que descrevem cada parte de um predecessor:
513211 divides in 51,32,11
so: 51 comes from 11111
32 comes from 222
11 comes from 1
put together: 111112221
Dessa forma, podemos definir um predecessor exclusivo para todos os ycomprimentos pares.
Nota : O 'predecessor' sdefinido dessa maneira geralmente NÃO é satisfatório f(s) = y.
Objetivo
Escreva um trecho de função / programa que aceite uma sequência de dígitos como entrada que
- calcula o próximo elemento da sequência de Conway se o comprimento da sequência de entrada for ímpar
- calcula o predecessor da sequência de entrada, conforme definido acima, se o comprimento da sequência de entrada for par .
O menor código em bytes vence.
Perguntas recentes baseadas nas seqüências do tipo look-and-say:
11111111111111ser? De acordo com suas especificações, seria 1111111. Você deve modificar sua especificação para definir uma resposta razoável para isso.
11111111111111simplesmente não tem antecessor. É uma entrada ilegal.
513111se divide em51,32e11?