FizzBuzz es tan simple, apuesto a que puedes hacerlo al revés. En este desafío, se le dará la longitud de la cadena FizzBuzz y deberá dar el entero positivo que produjo esa cadena.
Descripción
Para desglosar esto, una cadena FizzBuzz para n se genera el siguiente algoritmo.
Comience con una cadena vacía y, para cada i=1..n(inclusive):
- Si
ies divisible por3y por5, anexadosFizzBuzza la cadena. - Si
ies simplemente divisible por3agregarFizz. - Si
ies simplemente divisible por5agregarBuzz. - Si
ies divisible por ninguno de los dos, agregue la representación decimal dei.
Entonces, por ejemplo, FizzBuzz(15)es el siguiente:
12Fizz4BuzzFizz78FizzBuzz11Fizz1314FizzBuzz
Se le dará Length(FizzBuzz(n))y debe determinar n. Puede suponer que la entrada es positiva y siempre tendrá la longitud de una cadena de FizzBuzz.
Reglas
Su solución puede ser un programa completo o una definición de función en cualquier lenguaje estándar aceptable. Su programa / función puede tomar argumentos y devolver respuestas de cualquier manera estándar aceptada . Las lagunas estándar están prohibidas.
Puede suponer que la entrada es positiva y válida (describe la longitud de alguna cadena de FizzBuzz) y es más pequeña que el entero más grande representable de forma nativa en su idioma.
Este es el código de golf, por lo que el conteo de bytes más corto gana.
Ejemplos
Aquí hay algunos casos de ejemplo
Length(FizzBuzz(n)) -> n
1 -> 1
6 -> 3
15 -> 6
313 -> 100
3677 -> 1001
Editar
Se corrigió el último caso de prueba. Gracias @SteadyBox.