Les golfeurs.
Ensemble, nous nous sommes regroupés pour produire un code concis, d'une beauté fonctionnelle et plus laid que le fantôme de l'opéra du roman original.
Le moment est venu pour nous de ramener la beauté dans le monde de la programmation. Avec de la couleur. D'une manière concise, la beauté fonctionnelle est plus laide que le fantôme de l'opéra du roman original.
Nous allons coder un surligneur de syntaxe coloré. Dans la plus petite quantité de code possible.
Vous recevrez via un fichier d'entrée ou Stdin un fichier C valide. Le fichier C utilisera la convention de ligne de votre choix et ne contiendra que des caractères ASCII 32-126. Vous devez le transformer en un fichier HTML qui s'affiche correctement au moins dans Chrome, qui montre le code source avec une coloration syntaxique. La sortie peut être dans un fichier ou vers Stdout.
Vous devez mettre en évidence:
Toutes les chaînes et tous les caractères (y compris les guillemets) en vert (# 00FF00). Les chaînes peuvent contenir des caractères d'échappement.
Tous les mots C réservés en bleu (# 0000FF).
Tous les commentaires en jaune (# FFFF00).
Toutes les directives du préprocesseur C en rose (# FF00FF).
La sortie affichée dans Chrome doit:
Soyez dans une police à largeur fixe
Affichez les nouvelles lignes où qu'elles apparaissent dans la source d'origine
Reproduisez avec précision les espaces blancs. Un caractère de tabulation doit être considéré comme 4 espaces.
Bonus
x 0,9 si vous incluez des numéros de ligne. Les numéros de ligne doivent pouvoir atteindre au moins 99999. Toute la source doit toujours être alignée - ainsi, le code source avec des numéros de ligne plus petits doit toujours commencer à la même position que le code source avec des numéros de ligne plus élevés
x 0,8 si le fond de chaque ligne alterne entre gris clair (# C0C0C0) et blanc (#FFFFFF)
x 0,9 si votre code source est écrit en C et peut se formater correctement.
Notation
C'est le golf de code. Votre score est le nombre d'octets de votre code source multiplié par les bonus. Le gagnant est le golfeur avec le score le plus bas.
Réponses:
Perl 769 caractères * 0,9 * 0,8 = 554
Probablement encore quelques améliorations à apporter sur certaines expressions régulières, mais ça y arrive lentement!
Version légèrement moins brouillée avec commentaires:
Met maintenant en évidence avec succès l'entrée de @ xfix.
</tr>
J'ai emprunté l'idée de laisser tomber l'entrée de @ xfix, merci!Exemple de sortie pour la solution de @ xfix .
la source
</tr>
et</td>
sont complètement facultatifs, donc je les ai simplement ignorés.if|int
est un char de moins quei(f|nt)
. Oud(efault|o|ouble)
est un autre caractère inférieur àd(efault|o(uble)?)
.<style>
bloc à la fin et omettez la balise de fin. Vous pouvez ensuite également omettre le dernier}
du style. Bien sûr, c'est complètement invalide, mais cela fonctionne dans Chrome!C -
16051200 caractères * 0,9 * 0,8 * 0,9 = 777 caractèresCertainement trop long, mais peu importe. 264 utilisé par la liste des mots clés elle-même. La version longue à doublure. N'utilise pas d'allocations de mémoire, donc l'utilisation de la mémoire est très faible (et tout est global, donc la pile n'est pas vraiment utilisée). Exemple de code HTML sur JSFiddle . À mon avis, le support des commentaires était la chose la plus complexe du code.
Et la version plus longue (qui est aussi lisible que le vrai programme, à part quelques astuces de golf de code, je ne pensais pas pouvoir appliquer facilement tout en jouant au programme.
la source
PHP 606 octets × 0,9 × 0,8 = 436
Formaté:
Lit depuis stdin et écrit vers stdout.
Les fins de ligne acceptées sont \ n et \ r \ n.
Est-ce que les numéros de ligne et l'alternance des couleurs de ligne.
J'ai utilisé des couleurs légèrement différentes pour que je puisse supporter de le regarder, mais pas d'une manière qui affecte le nombre d'octets.
Je n'ai pas Chrome pour le tester même si ça va dans Firefox.
la source
C ++ -
5067 octets4612 * 0,9 * 0,8 = 3320 (* 0,9 = 2988 si le formatage lui-même compte - il est écrit en C ++)Je me rends compte que c'est plus grand que les solutions déjà présentées ici, mais j'ai décidé de le publier quand même parce que j'ai commencé à travailler sur ma version avant la publication de la solution C par xfix.
La moitié de cela est le grand tableau de mots-clés C et C ++.
Version lisible:
la source
__
(deux traits de soulignement) soit un mot-clé, car la spécification indique qu'il est réservé à des fins d'implémentation.