Wyzwanie: Wyprodukuj następujący wynik, używając jak najmniejszej liczby znaków:
_ _ _ _ _ _ _
| | | | ___| | | ___ __ _____ _ __| | __| | |
| |_| |/ _ \ | |/ _ \ \ \ /\ / / _ \| '__| |/ _` | |
| _ | __/ | | (_) | \ V V / (_) | | | | (_| |_|
|_| |_|\___|_|_|\___( ) \_/\_/ \___/|_| |_|\__,_(_)
|/
Zasady i ograniczenia:
Nie możesz używać FIGLet ani żadnych podobnych narzędzi. (W przeciwnym razie
figlet Hello, world!
byłoby to trywialne i prawie bezkonkurencyjne rozwiązanie).Twój program musi składać się wyłącznie z drukowalnych znaków ASCII - w szczególności punktów kodowych 9 (TAB), 10 (LF) i 32 - 126. (Jeśli twój język / system operacyjny wymaga podziału linii CRLF, możesz użyć tych zamiast zwykłych LF). Tak , niestety dyskwalifikuje to każdy język, który wymaga znaków spoza ASCII (lub danych nietekstowych) jako części składni.
Dane wyjściowe muszą wyglądać dokładnie tak jak w powyższym przykładzie. Jeśli chcesz, możesz jednak dołączyć dodatkowe białe znaki na wyjściu. Możesz założyć 8-znakowe odstępy między znakami (lub natywne ustawienie domyślne wybranej platformy, jeśli ma spójne ustawienie).
Ps. Aby ustawić tę wartość, wymyśliłem Perl o 199 znakach. Nie opublikuję go jednak na wypadek, gdyby ktoś wymyślił to samodzielnie. (Ponadto jest to trochę tandetne.) Oczywiście nie powinno to zniechęcać do publikowania własnego rozwiązania, nawet jeśli jest ono dłuższe.
Aktualizacja: Teraz, gdy Han pobił go o jeden znak, oto moje tandetne rozwiązanie Perla z 199 znakami:
use Compress'Zlib;say uncompress unpack u,'M>-I]BT$*`S$,`^]YQ=R:0,&_Z<DP?8@?WVQJ]E2J"%E$$@)R(/(/MCJ*\U!OM`Z#=5`4Y>6M=L\L%DMP&DB0V.4GQL&OOGB$4:%`4TT4!R8O-Z(^BTZWNV?>F86K:9+""-35*-LNC:T^D:_$#%^`";"DD0'
Jest bardzo podobny do rozwiązania DC (i wszystkich innych rozwiązań opartych na zlib / gzip w różnych językach), tyle że użyłem uuencoding zamiast base64 dla skompresowanego tekstu i kilku innych drobnych sztuczek golfowych.
Aktualizacja 2 : Myślę, że nadszedł czas, aby oficjalnie zaakceptować zwycięzcę. Pierwsze miejsce zajmuje kod PHP konsolenfreddy , ponieważ bez względu na liczbę znaków, jest on jak dotąd najkrótszy. W rzeczywistości połączenie go ze zoptymalizowanym strumieniem DEFLATE z mojego kodu Perla o 199 znakach daje jeszcze krótsze rozwiązanie o 176 znakach:
<?=gzinflate(base64_decode("fYtBCgMxDAPvecXcmkDBv+nJMH2IH99savZUqghZRBICciDyD7Y6ivNQbwOg3VQFOXlrXbPLBZLcBpIkNjlJ8bBr754hFGhQFNNFAcmLzeiPotOt7tn3plq2mSwgjU1SjbLo2tPpGvxAxfgA"));
Uważam jednak, że han zasługuje na specjalne wyróżnienie za zbliżenie się bez użycia wcześniej napisanych narzędzi dekompresyjnych. Gratulacje dla was obojga i szczęśliwego nowego roku dla wszystkich!