O FizzBuzz é muito simples, aposto que você pode fazer isso ao contrário. Neste desafio, você receberá o comprimento da sequência do FizzBuzz e deverá fornecer o número inteiro positivo que produziu essa sequência.
Descrição
Para dividir isso, uma string do FizzBuzz para n
é gerada pelo seguinte algoritmo.
Comece com uma string vazia e, para cada i=1..n
(inclusive):
- Se
i
é divisível por3
e por5
, acrescenteFizzBuzz
à sequência. - Se
i
é apenas divisível por3
acréscimoFizz
. - Se
i
é apenas divisível por5
acréscimoBuzz
. - Se não
i
é divisível por nenhum, acrescente a representação decimal dei
.
Então, por exemplo, FizzBuzz(15)
é o seguinte:
12Fizz4BuzzFizz78FizzBuzz11Fizz1314FizzBuzz
Você será dado Length(FizzBuzz(n))
e deve determinar n
. Você pode assumir que a entrada é positiva e sempre terá o comprimento de alguma string do FizzBuzz.
Regras
Sua solução pode ser um programa completo ou uma definição de função em qualquer idioma padrão aceitável. Seu programa / função pode receber argumentos e retornar respostas de qualquer maneira aceita de maneira padrão . As brechas padrão são proibidas.
Você pode assumir que a entrada é positiva e válida (descreve o comprimento de alguma string do FizzBuzz) e é menor que o maior número inteiro representável nativamente no seu idioma.
Este é o código de golfe, portanto, o menor número de bytes vence.
Exemplos
Aqui estão alguns exemplos de casos
Length(FizzBuzz(n)) -> n
1 -> 1
6 -> 3
15 -> 6
313 -> 100
3677 -> 1001
Editar
Corrigido o último caso de teste. Obrigado @SteadyBox.