Sulla scia delle molte (due?) Sfide relative a FizzBuzz pubblicate di recente su PPCG, sono stato tentato di inventare le mie. Ecco ...
Fizz Buzz Lightyear
Scrivi un programma o una funzione che accetta un numero intero ne stampa FizzBuzzper qualsiasi numero divisibile per 15, Fizzper qualsiasi numero divisibile per 3 e Buzzper qualsiasi numero divisibile per 5, fino a (e incluso) n. L'output per tutti ideve essere seguito da una nuova riga. Ma c'è una svolta!
Per ogni terza volta che stampi Buzz, Buzz Lightyear finalmente risponde alla tua chiamata e si blocca nel tuo programma. Quindi si presenta - ma da quando è atterrato in modo anomalo, parte di ciò che ha detto si confonde con l'output del tuo programma:
Buzz Lightyear, Space Ranger, Universe Protection Unit.
FizzBuzz Lightyear, Space Ranger, Universe Protection Unit.
(vale a dire, solo accodamento Lightyear, Space Ranger, Universe Protection Unit.per Buzzo FizzBuzz- qualunque cosa sia avreste visualizzata altrimenti noti lo spazio iniziale.)
Tuttavia, Buzz Lightyear, essendo lo Space Ranger, ha un ascolto molto acuto e quindi la stampa FizzBuzzconta per il tuo Buzzconteggio .
Quindi, Buzz si blocca per difendere il tuo computer da tutta quell'uscita malvagia, fino a quando non colpisci un altro numero divisibile per 5 (o 15, poiché anche quelli sono divisibili per 5). Ciò significa che fino a quando non è necessario stampare Buzz(o FizzBuzz) di nuovo, non si stampa nulla.
Quando finalmente raggiungi quella condizione, Buzz parte:
To infinity and beyond!
Esempio di output
Questo è l'output previsto per n = 25: (nota come salta da 16 a 19)
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
Regole
La nuova riga finale facoltativa è accettabile.
Questo è il codice golf; come tale, vince il codice più breve, in byte.
Assumi che nsia valido e maggiore o uguale a 15 (ovvero quando la sfida si discosta per la prima volta dal fizzbuzz standard)
Buzz ti saluta quando il "Buzz counter" (che conta entrambi Buzze FizzBuzz) colpisce 3; parte quando viene stampato il successivo Buzz(incluso, di nuovo, entrambi Buzze FizzBuzz).
Il numero con cui parte non conta ai fini del successivo "Buzz counter"; dovresti invece ricominciare a contare gli Buzzes da 0. Ad esempio, un programma in esecuzione con n = 25(output di esempio) dovrebbe terminare con un "contatore Buzz" di 1, poiché è quante volte è Buzzstato stampato dall'ultima volta che è partito.
Nel caso in cui nrientri tra uno degli arrivi di Buzz e una delle sue partenze (cioè, è ancora lì - non stai stampando nulla), ci si aspetta un grazioso termine. Pertanto, l'ultima riga di output sarebbe la sua introduzione
Sono vietate le scappatoie standard.
nrientra tra l'arrivo di Buzz Lightyear e la sua partenza?