Golfer.
Gemeinsam haben wir uns zusammengeschlossen, um Code zu produzieren, der prägnant, funktional schön und hässlicher ist als das Phantom der Oper aus dem ursprünglichen Roman.
Es ist an der Zeit, die Schönheit wieder in die Welt des Programmierens zu bringen. Mit Farbe. In einer Weise, die prägnant und funktional schön ist, ist sie hässlicher als das Phantom der Oper aus dem ursprünglichen Roman.
Wir werden einen farbenfrohen Syntax-Textmarker programmieren. In der kürzest möglichen Menge an Code.
Sie erhalten über eine Eingabedatei oder Stdin eine gültige C-Datei. Die C-Datei verwendet die Linienkonvention Ihrer Wahl und enthält nur ASCII-Zeichen 32-126. Sie müssen es in eine HTML-Datei umwandeln, die zumindest in Chrome korrekt angezeigt wird und den Quellcode mit Syntaxhervorhebung anzeigt. Die Ausgabe kann in einer Datei oder nach Stdout erfolgen.
Sie müssen markieren:
Alle Zeichenfolgen und Zeichen (einschließlich der Anführungszeichen) in Grün (# 00FF00). Die Zeichenfolgen können maskierte Zeichen enthalten.
Alle C reservierten Wörter in Blau (# 0000FF).
Alle Kommentare in Gelb (# FFFF00).
Alle C-Präprozessor-Direktiven in Pink (# FF00FF).
Die Ausgabe in Chrome muss:
Seien Sie in einer Schriftart mit fester Breite
Zeigen Sie neue Zeilen an, wo immer sie in der Originalquelle erschienen sind
Genaue Wiedergabe von Leerzeichen. Ein Tabulatorzeichen sollte aus 4 Leerzeichen bestehen.
Boni
x 0,9, wenn Sie Zeilennummern einfügen. Zeilennummern müssen mindestens 99999 erreichen können. Alle Quellen müssen noch ausgerichtet sein. Daher sollte Quellcode mit kleineren Zeilennummern an derselben Position beginnen wie Quellcode mit höheren Zeilennummern
x 0,8, wenn der Hintergrund jeder Zeile zwischen hellgrau (# C0C0C0) und weiß (#FFFFFF) wechselt
x 0,9, wenn Ihr Quellcode in C geschrieben ist und sich selbst korrekt formatieren kann.
Wertung
Das ist Code Golf. Ihre Punktzahl ist die Anzahl der Bytes Ihres Quellcodes multipliziert mit Boni. Der Gewinner ist der Golfer mit der niedrigsten Punktzahl.
Antworten:
Perl 769 Zeichen * 0,9 * 0,8 = 554
Wahrscheinlich müssen noch einige Verbesserungen an einigen Regexen vorgenommen werden, aber es geht langsam voran!
Etwas weniger verschleierte Version mit Kommentaren:
Markiert jetzt erfolgreich den Eintrag von @ xfix.
Die Idee,
</tr>
von @ xfix's Eintrag zu streichen, wurde ausgeliehen, danke!Ausgabebeispiel für die Lösung von @ xfix .
quelle
</tr>
und</td>
sind völlig optional, so habe ich sie einfach ignoriert.if|int
ist ein Char weniger alsi(f|nt)
. Oderd(efault|o|ouble)
ist ein anderer Char kleiner alsd(efault|o(uble)?)
.<style>
Block an das Ende verschieben und das End-Tag weglassen. Sie können dann auch den letzten}
des Stils weglassen . Klar, es ist komplett ungültig, aber es funktioniert in Chrome!C -
16051200 Zeichen * 0,9 * 0,8 * 0,9 = 777 ZeichenAuf jeden Fall zu lang, aber was auch immer. 264 von der Liste der Keywords selbst verwendet. Die lange One-Liner-Version. Verwendet keine Speicherzuweisungen, daher ist die Speichernutzung sehr gering (und alles ist global, sodass der Stapel nicht wirklich verwendet wird). Beispiel-HTML in JSFiddle . Meiner Meinung nach war die Unterstützung von Kommentaren die komplexeste Sache im Code.
Und die längere Version (die so lesbar ist wie ein echtes Programm, abgesehen von ein paar Code-Golf-Tricks, von denen ich nicht dachte, dass ich sie beim Golfspielen einfach anwenden könnte).
quelle
PHP 606 Bytes × 0,9 × 0,8 = 436
Formatiert:
Liest von stdin und schreibt nach stdout.
Akzeptierte Zeilenenden sind \ n und \ r \ n.
Ändert Zeilennummern und Linienfarben.
Ich habe etwas andere Farben verwendet, damit ich es ertragen kann, wenn auch nicht in einer Weise, die die Anzahl der Bytes beeinflusst.
Ich habe kein Chrome, um es zu testen, obwohl es in Firefox in Ordnung ist.
quelle
C ++ -
5067 Bytes4612 * 0,9 * 0,8 = 3320 (* 0,9 = 2988, wenn es möglich ist, sich selbst zu formatieren, zählt - es ist in C ++ geschrieben)Ich stelle fest, dass dies größer ist als die hier bereits vorgestellten Lösungen, aber ich habe mich trotzdem dazu entschlossen, dies zu veröffentlichen, da ich mit der Arbeit an meiner Version begonnen habe, bevor die C-Lösung von xfix veröffentlicht wurde.
Die Hälfte davon sind die zahlreichen C- und C ++ - Schlüsselwörter.
Lesbare Version:
quelle
__
(zwei Unterstrichen) beginnt , ein Schlüsselwort ist, da die Spezifikation besagt, dass es für Implementierungszwecke reserviert ist.