FizzBuzz jest tak prosty, że możesz to zrobić wstecz. W tym wyzwaniu otrzymasz długość ciągu FizzBuzz i musisz podać dodatnią liczbę całkowitą, która wytworzyła ten ciąg.
Opis
Aby to rozbić, ciąg FizzBuzz dla njest generowany przez następujący algorytm.
Zacznij od pustego ciągu i dla każdego i=1..n(włącznie):
- Jeśli
ijest podzielna przez3i5dołączFizzBuzzdo łańcucha. - Jeśli
ijest podzielne przez3appendFizz. - Jeśli
ijest podzielne przez5appendBuzz. - Jeśli nie
imożna podzielić przez żadną, dołącz dziesiętną reprezentacjęi.
Na przykład FizzBuzz(15):
12Fizz4BuzzFizz78FizzBuzz11Fizz1314FizzBuzz
Otrzymasz Length(FizzBuzz(n))i musisz ustalić n. Możesz założyć, że dane wejściowe są dodatnie i zawsze będą miały długość niektórych ciągów FizzBuzz.
Zasady
Twoje rozwiązanie może zawierać pełną definicję programu lub funkcji w dowolnym standardowym języku. Twój program / funkcja może przyjmować argumenty i zwracać odpowiedzi w dowolny standardowy sposób . Standardowe luki są zabronione.
Możesz założyć, że dane wejściowe są dodatnie i prawidłowe (opisuje długość niektórych ciągów FizzBuzz) i są mniejsze niż największa liczba całkowita reprezentatywna dla twojego języka.
To jest golf golfowy, więc wygrywa najkrótsza liczba bajtów.
Przykłady
Oto kilka przykładowych przypadków
Length(FizzBuzz(n)) -> n
1 -> 1
6 -> 3
15 -> 6
313 -> 100
3677 -> 1001
Edytować
Naprawiono ostatni przypadek testowy. Dzięki @SteadyBox.