FizzBuzz est si simple, je parie que vous pouvez le faire à l'envers. Dans ce défi, vous recevrez la longueur de la chaîne FizzBuzz et devez donner l'entier positif qui a produit cette chaîne.
La description
Pour décomposer cela, une chaîne FizzBuzz pour nest générée par l'algorithme suivant.
Commencez avec une chaîne vide et, pour chaque i=1..n(inclus):
- Si
iest divisible par3et par5, ajoutezFizzBuzzà la chaîne. - Si
iest juste divisible par3ajouterFizz. - Si
iest juste divisible par5ajouterBuzz. - Si
in'est divisible par aucun, ajoutez la représentation décimale dei.
Par exemple, FizzBuzz(15)voici ce qui suit:
12Fizz4BuzzFizz78FizzBuzz11Fizz1314FizzBuzz
On vous donnera Length(FizzBuzz(n))et vous devrez déterminer n. Vous pouvez supposer que l'entrée est positive et sera toujours la longueur d'une chaîne FizzBuzz.
Règles
Votre solution peut être un programme complet ou une définition de fonction dans n'importe quelle langue standard acceptable. Votre programme / fonction peut accepter des arguments et renvoyer des réponses de toute manière standard acceptée . Les failles standard sont interdites.
Vous pouvez supposer que l'entrée est positive et valide (décrit la longueur d'une chaîne FizzBuzz) et est plus petite que le plus grand entier représentable nativement dans votre langue.
C'est le golf par code, donc le nombre d'octets le plus court l'emporte.
Exemples
Voici quelques exemples de cas
Length(FizzBuzz(n)) -> n
1 -> 1
6 -> 3
15 -> 6
313 -> 100
3677 -> 1001
modifier
Correction du dernier cas de test. Merci @SteadyBox.