Son zamanlarda PPCG'de yayınlanan birçok (iki?) FizzBuzz ile ilgili zorluğun ardından, kendiminkini ortaya çıkarmak istedim. Seyretmek...
Fizz Buzz Lightyear
Tamsayı alan nve FizzBuzz15'e Fizzbölünebilen herhangi bir sayı için, 3'e Buzzbölünebilen herhangi bir sayı için ve 5'e kadar (ve dahil) bölünebilen herhangi bir sayı için yazdırılan bir program veya işlev yazın n. Herkesin içıktısını bir satırsonu takip etmelidir. Ama bir bükülme var!
BuzzBuzz Lightyear, yazdırdığınız her üçüncü seferde , programınızdaki arama ve çökme alanlarınıza kulak verir. Daha sonra kendini tanıtır - ancak çöktüğü için söylediklerinden bazıları programınızın çıktısıyla karışır:
Buzz Lightyear, Space Ranger, Universe Protection Unit.
FizzBuzz Lightyear, Space Ranger, Universe Protection Unit.
(bu sadece ekleme olduğu Lightyear, Space Ranger, Universe Protection Unit.için Buzzya FizzBuzz- bu başka türlü görüntülenen olurdu ne olursa olsun lider boşluğu unutmayın.)
Ancak, Buzz Lightyear, öyle Uzay Polisi olmak çok akut işitme vardır ve bu yüzden baskı FizzBuzzsizin için hesaba katılacaktır Buzzsayım .
Ardından, Buzz, bilgisayarınızı 5 ile bölünebilen başka bir numaraya (veya 5'e bölünebildiğinden) kadar tüm bu kötü çıkıştan korumak için takılır. Bunun anlamı, tekrar yazdırmanız Buzz(veya FizzBuzz) yapmanız gerekene kadar hiçbir şey yazdırmamanızdır.
Sonunda bu duruma ulaştığınızda, Buzz yola çıkar:
To infinity and beyond!
Örnek Çıktı
Bu beklenen çıktı n = 25: (16'dan 19'a nasıl atladığına dikkat edin)
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz Lightyear, Space Ranger, Universe Protection Unit.
To infinity and beyond!
Fizz
22
23
Fizz
Buzz
kurallar
İsteğe bağlı sondaki yeni satır kabul edilebilir.
Bu kod golf; bu nedenle, bayt cinsinden en kısa kod kazanır.
Verilen varsayımın ngeçerli ve 15'ten büyük veya ona eşit olduğu varsayılır (bu, meydan okumanın standart fizzbuzz'dan ilk kez saptığı zamandır)
"Buzz sayacı" (her ikisini de sayar Buzzve FizzBuzz) 3'e ulaştığında Buzz sizi karşılar ; bir sonraki Buzz(tekrar, her ikisi Buzzve dahil FizzBuzz) yazdırıldığında yola çıkar .
Kalkış sayısı bir sonraki "Buzz sayacı" na dahil değildir; Bunun yerine es'leri Buzz0'dan tekrar saymaya başlamalısınız. Örneğin, n = 25(örnek çıktı) ile çalışan bir programın 1 "Buzz sayacı" ile bitmesi gerekir, çünkü bu Buzzson ayrılışından bu yana kaç kez yazdırıldığıdır.
Durumda nBuzz'ın gelenler bir ve onun gidiş biri arasında düşer (yani Hala orada - Bir şeye baskı değiliz), zarif sonlandırma bekleniyor. Bu nedenle, son çıktı satırı onun tanıtımı olacaktır
Standart boşluklar yasaktır.
nBuzz Lightyear'ın gelişi ile gidişi arasına girdiğinde beklenen davranışı netleştirebilir misiniz ?