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 por3e por5, acrescenteFizzBuzzà sequência. - Se
ié apenas divisível por3acréscimoFizz. - Se
ié apenas divisível por5acré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.