Ormai dovresti avere tutti familiarità con la sequenza di Conway ( nota anche come sequenza "look-and-say") :
1
11
21
1211
111221
312211
etc
Puoi anche iniziare da qualsiasi numero arbitrario come punto di partenza. Lascia che f(s)sia il prossimo elemento della sequenza. Ora per ogni dato sche possiamo trovare f(s). Il contrario non è così banale: non è per tutti ypossibile trovare il predecessore stale f(s) = y. Ad esempio, y = 1non possiamo trovare un predecessore. Ma se yha un ancor lunghezza si può dividere in coppie di cifre che descrivono ciascuno parte di un predecessore:
513211 divides in 51,32,11
so: 51 comes from 11111
32 comes from 222
11 comes from 1
put together: 111112221
Quindi in questo modo possiamo definire un predecessore unico per ogni ylunghezza pari.
Nota : il "predecessore" sdefinito in questo modo generalmente NON soddisfa f(s) = y.
Obbiettivo
Scrivi uno snippet di funzione / programma che accetta una stringa di cifre come input
- calcola l'elemento successivo della sequenza di Conway se la lunghezza della stringa di input è dispari
- calcola il predecessore della stringa di input come definito sopra se la lunghezza della stringa di input è pari .
Vince il codice più breve in byte.
Domande recenti basate sulle sequenze look-and-say:
11111111111111essere? Secondo le tue specifiche, lo sarebbe 1111111. È necessario modificare le specifiche per definire una risposta ragionevole per questo.
11111111111111non ha semplicemente un predecessore. È un input illegale.
513111divide in51,32e11?