Klasyczne wyzwanie golfowe. Napisz najbardziej niejasny program w Perlu, aby wydrukować „Po prostu innego hakera Perla”. Oto artykuł na ten temat w Wikipedii. Punkty bonusowe, jeśli mieszczą się w 3 liniach / 70 znaków każdy.
popularity-contest
obfuscation
perl
Thomas O
źródło
źródło
Odpowiedzi:
Nie jestem pewien, czy wymagana jest nowa linia na końcu: jeśli tak, dodanie
."\n"
nadal nie zabiera mnie do limitu 3 linii * 70 znaków / linię.Gdyby nie problemy z kodowaniem, inicjalizacja mogłaby być znacznie mniejsza i rozpakowana za pomocą rozpakowywania, więc spodziewam się, że ktoś może to poprawić. Zastanawiam się nad stworzeniem bardziej wydajnej wersji - jest to O (n ^ 2) i możliwe jest dekodowanie O (n lg n).
źródło
źródło
wersja animowana :)
źródło
Mniej niż 70 znaków w 3 liniach:
Uwaga: jest zakodowany w standardzie ISO-8859-1 .
W sumie ponad 70 znaków, ale mniej niż 100!
I trochę zaciemniony !
Trochę daleko ?!
Istnieje skrypt <1 000 perl z pełną pomocą i niektórymi funkcjami:
(Jest również zakodowany w ISO-8859-1 ;)
Istnieje kilka funkcji:
Gdzie:
-v
podpis-h
pomoc ciąg-j
prompt Tylko kolejny haker perla.-c
animowanie japh ciąg lub dowolny ciąg znaków, jeśli zgłosił-k
sam zrzuć skrypt-p
polute inny skryptWięc:
(Ostatni ciąg jest animowany :)
Próba pozbycia się obfucate
Na CPAN dostępny jest ładny moduł B :: Deparse :
Cóż, jest to bardziej czytelne, ale ...
Ok, jest to
pack('v', 27000)
, co to znaczy:Hmm abyśmy mogli uprościć pracę deparser:
Cóż, teraz jest jasne, że cały skrypt jest zawarty w
qq(...)
linii 2 i należy go przesłaćeval
. Możemy teraz:W nadziei, że działacz mógł lepiej zrozumieć, teraz:
Dobrze! Teraz mamy coś prawie czytelnego. Czy to zawsze daje taki sam wynik?
(I ostatnia linia jest animowana :)
źródło
Działa z włączonymi ograniczeniami. Chociaż nie działa na wszystkich komputerach / perlach, z powodu
CORE'die
i~~%ENV
.źródło