Golfiści
Razem połączyliśmy siły, aby stworzyć zwięzły kod, funkcjonalnie piękny i brzydszy niż Upiór w operze z oryginalnej powieści.
Nadszedł czas, aby przywrócić piękno do świata programowania. Kolorem W sposób zwięzły, funkcjonalnie piękny jest brzydszy niż Upiór w operze z oryginalnej powieści.
Będziemy kodować kolorowy zakreślacz składni. W najkrótszej możliwej ilości kodu.
Otrzymasz za pośrednictwem pliku wejściowego lub standardowego prawidłowy plik C. Plik C będzie korzystał z wybranej konwencji wierszy i będzie zawierał tylko znaki ASCII 32–126. Musisz go przekształcić w plik HTML, który wyświetla się poprawnie przynajmniej w Chrome, który pokazuje kod źródłowy z podświetlaniem składni. Dane wyjściowe mogą znajdować się w pliku lub na standardowe wyjście.
Musisz zaznaczyć:
Wszystkie ciągi i znaki (w tym znaki cudzysłowu) w kolorze zielonym (# 00FF00). Ciągi mogą zawierać znaki specjalne.
Wszystkie słowa C zastrzeżone w kolorze niebieskim (# 0000FF).
Wszystkie komentarze w kolorze żółtym (# FFFF00).
Wszystkie dyrektywy C preprocesora w kolorze różowym (# FF00FF).
Dane wyjściowe wyświetlane w Chrome muszą:
Być czcionką o stałej szerokości
Wyświetlaj nowe wiersze w dowolnym miejscu w oryginalnym źródle
Dokładnie odtwarzaj białe znaki. Znak tabulacji należy traktować jako 4 spacje.
Bonusy
x 0,9, jeśli podasz numery linii. Numery linii muszą osiągać co najmniej 99999. Wszystkie źródła muszą być nadal wyrównane - więc kod źródłowy z mniejszymi numerami linii powinien nadal zaczynać się w tej samej pozycji co kod źródłowy z wyższymi numerami linii
x 0,8, jeżeli tło każdej linii jest na przemian jasnoszare (# C0C0C0) i białe (#FFFFFF)
x 0,9, jeśli kod źródłowy jest napisany w C i może się poprawnie sformatować.
Punktacja
To jest kod golfowy. Twój wynik to liczba bajtów kodu źródłowego pomnożona przez wszelkie bonusy. Zwycięzca jest golfistą z najniższym wynikiem.
Odpowiedzi:
Perl 769 znaków * 0,9 * 0,8 = 554
Prawdopodobnie nadal istnieją pewne poprawki, które należy wprowadzić w niektórych wyrażeniach regularnych, ale powoli się tam pojawiają!
Nieco mniej zaciemniona wersja z komentarzami:
Teraz pomyślnie wyróżnia wpis @ xfix.
Zapożyczyłem pomysł, aby zrezygnować
</tr>
z wpisu @ xfix, dziękuję!Przykład danych wyjściowych dla rozwiązania @ xfix .
źródło
</tr>
i</td>
są całkowicie opcjonalne, więc po prostu je zignorowałem.if|int
Jest o jeden char mniej niżi(f|nt)
. Lubd(efault|o|ouble)
jest inny char mniej niżd(efault|o(uble)?)
.<style>
blok na koniec i pominiesz znacznik end. Możesz także pominąć ostatni}
styl. Jasne, jest całkowicie nieprawidłowy, ale działa w Chrome!C -
16051200 znaków * 0,9 * 0,8 * 0,9 = 777 znakówZdecydowanie za długo, ale cokolwiek. 264 używane przez samą listę słów kluczowych. Długa wersja z jedną wkładką. Nie używa przydziałów pamięci, więc użycie pamięci jest bardzo niskie (i wszystko jest globalne, więc stos nie jest tak naprawdę używany). Przykładowy kod HTML na JSFiddle . Moim zdaniem obsługa komentarzy była najbardziej złożoną rzeczą w kodzie.
I dłuższa wersja (która jest tak czytelna jak prawdziwy program, oprócz kilku sztuczek golfowych z kodem, nie sądziłam, że mogłabym go łatwo zastosować podczas gry w golfa.
źródło
PHP 606 bajtów × 0,9 × 0,8 = 436
Sformatowany:
Czyta ze standardowego wejścia i zapisuje na standardowe wyjście.
Zaakceptowane zakończenia linii to \ n i \ r \ n.
Czy numery linii i naprzemienność kolorów linii.
Użyłem lekko innych kolorów, więc mogłem znieść patrzenie na to, ale nie w sposób, który wpływa na liczbę bajtów.
Nie mam Chrome, by go przetestować, chociaż w Firefoksie jest w porządku.
źródło
C ++ -
5067 bajtów4612 * 0,9 * 0,8 = 3320 (* 0,9 = 2988, jeśli liczy się sama zdolność formatowania - jest napisane w C ++)Zdaję sobie sprawę, że jest to większe niż rozwiązania już tu przedstawione, ale i tak postanowiłem to opublikować, ponieważ zacząłem pracować nad moją wersją przed opublikowaniem rozwiązania C przez xfix.
Połowa z nich to duża liczba słów kluczowych C i C ++.
Wersja do odczytu:
źródło
__
(dwa podkreślenia), jest słowem kluczowym, ponieważ specyfikacja mówi, że jest zarezerwowane do celów implementacyjnych.