Bienvenue dans le monde du golf de compilation. Votre tâche consiste à écrire un programme qui génère un autre programme pour lire une variante de FizzBuzz sur spec.
Votre compilateur
Écrivez un compilateur qui génère des variantes du programme FizzBuzz à spec. La spécification de cette variante est exprimée sous la forme d'un tableau de paires entiers / chaînes.
- L'entrée peut être sous n'importe quelle forme qui convient à votre langue. (Mes exemples utilisent n: xxxx, mais ce n'est qu'à des fins d'illustration.)
- Chaque entrée entière ne peut être utilisée qu'une seule fois par appel de votre compilateur.
- L'entier de chaque paire aura une valeur d'au moins un.
- La chaîne de chaque paire sera composée uniquement de quatre lettres ASCII.
- La sortie doit être un seul programme complet conforme aux règles ci-dessous.
- La sortie peut être sous n'importe quelle forme pratique, tant qu'il s'agit d'un programme textuel. (Donc pas d'expressions lambda retournées.)
Le comportement n'est pas défini pour les entrées non conformes aux règles ci-dessus.
Votre programme FizzBuzz généré
Le programme généré par votre compilateur prendra un seul entier, n , en entrée. Il produira une séquence de nombres allant de un à n inclus , en remplaçant les nombres par des chaînes FizzBuzz si nécessaire.
- Le programme généré doit être dans la même langue que le compilateur.
- L'entrée n peut être sous n'importe quelle forme adaptée à votre langue.
- n aura une valeur d'au moins un.
- Un nombre qui est un multiple d'au moins l'un des entiers entrés dans le compilateur doit être remplacé par toutes les chaînes associées à ces entiers réunis.
- Un nombre qui ne doit pas être remplacé par une chaîne FizzBuzz doit être sorti en ASCII décimal.
Par exemple;
> GenFizzBuzz 3:Fizz 5:Buzz
> a.out 5
1
2
Fizz
4
Buzz
Notation
Votre entrée sera notée par la longueur des programmes générés par votre compilateur ajoutée à la longueur de votre compilateur. Exécutez votre compilateur plusieurs fois avec chacun des paramètres suivants et ajoutez les longueurs des programmes générés ainsi que la longueur du compilateur pour trouver votre score.
- Il suffit de compter. (Aucune entrée - Le programme généré comptera de 1 à n sans remplacements.)
- Just Golf. (1: Golf - Le programme généré affichera "Golf" n fois.)
- FizzBuzz classique. (3: Fizz, 5: Buzz)
(Notez que votre compilateur est requis pour générer du code pour toute entrée valide, pas seulement celles listées.)