FizzBuzz çok basittir, bahis geriye doğru yapabilirsiniz. Bu mücadelede, FizzBuzz dizesinin uzunluğu size verilecek ve bu dizgeyi üreten pozitif tamsayıyı vermelisiniz.
Açıklama
Bunu kesmek için n
, aşağıdaki algoritma için bir FizzBuzz dizgisi oluşturulur.
Boş bir dizeyle başlayın ve her biri için i=1..n
(dahil):
- Eğer
i
bölünemeyen bir3
tarafından5
, komutaFizzBuzz
dizeye. - Eğer
i
sadece3
ek tarafından bölünebilir iseFizz
. - Eğer
i
sadece5
ek tarafından bölünebilir iseBuzz
. - Eğer
i
ne ile bölünebilir, ekleme ondalık ifadesii
.
Yani örneğin FizzBuzz(15)
:
12Fizz4BuzzFizz78FizzBuzz11Fizz1314FizzBuzz
Size verilecek Length(FizzBuzz(n))
ve belirlemelisiniz n
. Girişin pozitif olduğunu ve her zaman bazı FizzBuzz dizesinin uzunluğu olacağını varsayabilirsiniz.
kurallar
Çözümünüz, standart olarak kabul edilebilir herhangi bir dilde eksiksiz bir program veya işlev tanımı olabilir. Programınız / fonksiyonunuz bağımsız değişkenleri alabilir ve standart olarak kabul edilmiş herhangi bir şekilde cevapları geri getirebilir . Standart boşluklar yasaktır.
Girişin pozitif ve geçerli olduğunu (bazı FizzBuzz dizesinin uzunluğunu açıklar) ve kendi dilinizde doğal olarak temsil edilebilecek en büyük tam sayıdan daha küçük olduğunu varsayabilirsiniz.
Bu kod golf, yani en kısa bayt sayısı kazanıyor.
Örnekler
İşte birkaç örnek vaka
Length(FizzBuzz(n)) -> n
1 -> 1
6 -> 3
15 -> 6
313 -> 100
3677 -> 1001
Düzenle
Sabit son test durumu. @ SteadyBox'a teşekkür ederiz.