FizzBuzz는 매우 간단합니다. 거꾸로 할 수 있습니다. 이 도전에서는 FizzBuzz 문자열의 길이가 주어지며 해당 문자열을 생성 한 양의 정수를 제공해야합니다.
기술
이를 분해하기 위해 n다음 알고리즘에 의해 FizzBuzz 문자열 이 생성됩니다.
빈 문자열로 시작하고 모든 i=1..n것을 포함하여 다음을 수행하십시오.
- 경우
i로 나눌3에 의해5, APPENDFizzBuzz문자열. - append
i로만 나눌 수 있다면 .3Fizz - append
i로만 나눌 수 있다면 .5Buzz i둘 다로 나눌 수없는 경우 의 10 진수 표시를 추가하십시오i.
예를 들면 FizzBuzz(15)다음과 같습니다.
12Fizz4BuzzFizz78FizzBuzz11Fizz1314FizzBuzz
당신은 주어질 Length(FizzBuzz(n))것이며 결정해야합니다 n. 입력이 양수이고 항상 일부 FizzBuzz 문자열의 길이라고 가정 할 수 있습니다.
규칙
솔루션은 표준 적으로 수용 가능한 언어로 완전한 프로그램 또는 기능 정의를 제공 할 수 있습니다. 프로그램 / 기능은 인수를 받아 표준 적으로 허용되는 방식으로 답변을 반환 할 수 있습니다 . 표준 허점은 금지되어 있습니다.
입력이 양수이고 유효하고 (일부 FizzBuzz 문자열의 길이를 설명 함) 언어에서 기본적으로 표현할 수있는 가장 큰 정수보다 작다고 가정 할 수 있습니다.
이것은 코드 골프이므로 가장 짧은 바이트 수로 승리합니다.
예
다음은 몇 가지 사례입니다.
Length(FizzBuzz(n)) -> n
1 -> 1
6 -> 3
15 -> 6
313 -> 100
3677 -> 1001
편집하다
마지막 테스트 사례를 수정했습니다. 감사합니다 @SteadyBox.