Benvenuti nel mondo del golf del compilatore. Il tuo compito è quello di scrivere un programma che genera un altro programma per riprodurre una variante di FizzBuzz su specifica.
Il tuo compilatore
Scrivi un compilatore che genera varianti del programma FizzBuzz su specifica. Le specifiche di questa variante sono espresse sotto forma di un array di coppie numero intero / stringa.
- L'input può essere in qualsiasi forma che sia conveniente per la tua lingua. (I miei esempi usano n: xxxx, ma questo è solo a scopo illustrativo.)
- Ogni input intero può essere utilizzato solo una volta per invocazione del compilatore.
- L'intero di ciascuna coppia avrà un valore di almeno uno.
- La stringa di ciascuna coppia sarà composta solo da esattamente quattro lettere ASCII.
- L'output deve essere un singolo programma completo conforme alle regole seguenti.
- L'output può essere in qualsiasi forma conveniente, purché si tratti di un programma testuale. (Quindi non restituire espressioni lambda.)
Il comportamento non è definito per gli input non conformi alle regole precedenti.
Il tuo programma FizzBuzz generato
Il programma generato dal tuo compilatore prenderà un singolo intero, n , come input. Produrrà una sequenza di numeri a partire da uno fino a incluso n , sostituendo i numeri con stringhe FizzBuzz quando richiesto.
- Il programma generato deve essere nella stessa lingua del compilatore.
- L'ingresso n può essere in qualsiasi forma conveniente per la tua lingua.
- n avrà un valore di almeno uno.
- Un numero che è un multiplo di almeno uno degli interi immessi nel compilatore deve essere sostituito da tutte le stringhe accoppiate con quegli interi uniti.
- Un numero che non deve essere sostituito da una stringa FizzBuzz deve essere emesso in ASCII decimale.
Per esempio;
> GenFizzBuzz 3:Fizz 5:Buzz
> a.out 5
1
2
Fizz
4
Buzz
punteggio
La tua voce verrà valutata in base alla lunghezza dei programmi generati dal tuo compilatore aggiunti alla lunghezza del tuo compilatore. Esegui il tuo compilatore molte volte con ciascuno dei seguenti parametri e aggiungi le lunghezze dei programmi generati insieme alla lunghezza del compilatore per trovare il tuo punteggio.
- Conta e basta. (Nessun input: il programma generato conterà da 1 a n senza sostituzioni.)
- Solo golf. (1: Golf - Il programma generato genererà "Golf" n volte.)
- FizzBuzz classica. (3: Fizz, 5: Buzz)
(Nota che il tuo compilatore è tenuto a generare codice per qualsiasi input valido, non solo questi elencati.)