Twoim zadaniem, jeśli nie chcesz odmówić, jest napisanie programu, który „golfa” fragment danego kodu w wybranym języku.
Podstawowa funkcjonalność:
- Usuń zewnętrzne białe znaki
- Usuń komentarze
„Zaawansowana” funkcjonalność:
- Połącz deklaracje (
int x; int y; int z;
doint x, y, z;
) - Używaj krótszych odmian podstawowych struktur kontrolnych (
while(1)
zastępuje sięfor(;;)
) - Przenieś kod (
i = 0; while(i < 10) { /* ... */ ++i; }
dofor(i = 0; i < 10; ++i) { /* ... */ }
) - Itp
popularity-contest
metagolf
Mateen Ulhaq
źródło
źródło
Odpowiedzi:
Python z Python
Robi mnóstwo rzeczy, w tym zmianę nazw zmiennych, usuwanie niepotrzebnych białych znaków i komentarzy oraz umieszczanie jak najwięcej w jednym wierszu. Nie zawsze działa całkowicie z bardziej zaawansowaną składnią Pythona i będę kontynuować aktualizację z wszelkimi poprawkami.
Kod:
Testowane na starej fraktalnej programie graficznym miałem ( 4672 do 1889 ):
Oryginalny:
Gra w golfa:
Uruchom na sobie (tworząc bardzo długi quine) (od 9951 do 5323 ):
źródło
import*
zamiastimport *
. Zgaduję, że zadziała również w Pythonie 2?BrainFuck - 489 znaków
Usuwa wszystkie znaki niewykonywalne. Szanuje komentarze od # do końca linii.
Oczywiście przebiegnij przez to źródło:
źródło
<>
co nic nie robiBrainfuck golfista w Bash (v3)
To jest praca w toku, będę ją aktualizować, jeśli będę mógł.
Odczytuje z pliku (nazwa pliku powinna być pierwszym argumentem wiersza poleceń).
Na razie to wszystko
<>+-.,[]
<>
,><
,+-
,-+
>>>><<<<<
zostaje zredukowana do<
Kod
Jak to działa
Po usunięciu wszystkich znaków niewykonywalnych wykonuje następujące czynności. Licznik trafień jest ustawiony
-1
na początku - zlicza liczbę operacji golfowych wykonanych za każdym razem, gdy biegnie zewnętrzna pętla.<>
,><
,+-
lub-+
, dodać 1 dohits
licznika i wróć do kroku 1.źródło
HQ9 + golfista w Bash (v3)
Wiem, że HQ9 + jest bezużyteczny, ale równie dobrze mogę przesłać pięciowierszowy. Czyta z
standardowe wejścieplik. Ścieżka do pliku powinna być pierwszym argumentem wiersza poleceń.cechy
HhQq9+
)+
(zwiększa liczbę, ale nie ma możliwości wydrukowania tej liczby)hq
na wielkie litery (nie gra w golfa)Kod
źródło
/dev/stdin
jako pierwszy argument :)Java z Javą
Pobiera nazwę pliku jako argument wiersza poleceń i edytuje plik na swoim miejscu.
while(true)
nafor(;;)
private
ifinal
Po uruchomieniu programu jego rozmiar zmniejsza się z 7792 do 4366.
źródło
Perl, części 1–2
(usuwa komentarze i ignoruje
#
znaki w podwójnych cudzysłowach)(usuwa wszystkie białe znaki po nawiasach i
=
znakach)Nie próbowałem golfa tym kodem. Może po zakończeniu może sam zagrać w golfa.
Przykładowe dane wejściowe
Wydajność
Następnie wyeliminuje spacje między symbolami i znakami alfanumerycznymi.
źródło
Golfista Java w Perlu
WIP w tej chwili, chociaż teraz robi się całkiem niezły kod.
Cechy:
Kod
źródło