Twoim celem jest napisanie najkrótszego programu, który wyświetli „Hello-World!” jako art. ASCII
Zasady:
- Musi być czytelny dla człowieka, nie dbam o jego rozmiar (cols / wiersze)
- Dane wyjściowe muszą zawierać tylko spacje („”), ostre („#”) i znaki nowej linii
- Dane wyjściowe muszą działać z czcionką o stałej szerokości (ale litery nie muszą używać czcionki o stałej szerokości)
- W rezultacie każda postać musi być oddzielona od siebie przynajmniej jedną spacją
Dodaj tytuł z językiem i liczbą bajtów w kodzie.
code-golf
ascii-art
hello-world
sebcap26
źródło
źródło
bash
: 33 znaków - pastebin.com/HZ1w8z8g Czy to możliwe?Odpowiedzi:
Absolutnie mi się podobało
Perl,
126 116 114 102 9887 (69) znaków (tylko ASCII i bez czcionek zewnętrznych)Na razie najkrótsze rozwiązanie ascii, które nie korzysta z zewnętrznych czcionek.
Chciałem przedstawić jakieś eleganckie rozwiązanie, ale @Ilmari Karonen rzucił mi wyzwanie
unpack
... nie powinienem tego robić :-)Cóż, ten kod
92 8869 znaków generuje angielski nieczytelny wynik identyczny jak @Ilmari Karonen:Bardziej elegancki wariant bez rozpakowania (88 znaków):
Ale myślę, że takie |. | E || .- |||., D! nic nie jest podobne do Hello-World! i nie powinno być dozwolone, więc trafia się tutaj prawdziwe rozwiązanie - rozpakuj wariant, 87 znaków :
Wynik:
Bardziej elegancki wariant przy 98 znakach:
Wynik:
Starsze rozwiązanie (114 znaków), inny rodzaj kodowania:
Wynik:
źródło
e
JavaScript, 178 bajtów
Działa to w przeglądarce Firefox 27 Scratchpad.
źródło
Mathematica
101 9998To rasteryzuje wyrażenie, uzyskuje dane obrazu binarnego, konwertuje każdy 1 na „#”, każdy 0 na „” (puste miejsce) i wyświetla dane wyjściowe w siatce 12 na 130 znaków.
Jedna postać oszczędzona dzięki Jonathanowi Van Matre.
źródło
Delphi 85 bajtów
Wiem, że nie jest to najładniejsze rozwiązanie, ale nie było reguły, która mówi, że nie można korzystać z zasobów zewnętrznych.
Wynik:
źródło
TStrings
. (Ale zachowaj instancję za pomocąTStringList
.)do X
. Treść „zasobu zewnętrznego”X
pozostaje nieokreślona (działa dla mnie, prawda?), Ale podam kilka możliwych sugestii poniżej ...Perl 5, 54 bajty / 71 znaków ASCII do wydruku
Oto 71-znakowa wersja ASCII do wydruku:
Wersja 54-bajtowa zawiera znaki niedrukowalne, więc udostępniam ją jako zrzut heksadecymalny. W systemach uniksowych możesz użyć,
xxd -r
aby zmienić zrzut szesnastkowy z powrotem w wykonywalny skrypt Perla:Oba należy uruchomić,
perl -M5.010
aby włączyć funkcję Perla 5.10+say
. Wyprodukują one następujące dane wyjściowe:(Pokazany jako zrzut ekranu, ponieważ ogromna wysokość linii na SE sprawia, że sztuka ASCII jest brzydka i trudna do odczytania. Mała litera „e” jest trochę niezręczna, ale uważam, że można ją zakwalifikować jako czytelną, jeśli tylko ledwo.)
Ps. Jeśli wynik powyższego rozwiązania wydaje Ci się zbyt minimalistyczny, oto 92-znakowy wariant, który daje wynik podobny do rozwiązania Tomasa :
Oto zrzut ekranu:
Pps. Jestem prawie pewien, że to ( GolfScript, 51 znaków ) jest najkrótszym rozwiązaniem ASCII do wydruku, jeśli nie liczyć tych, które nazywają banner / FIGLet lub które oszukują w inny sposób:
Dane wyjściowe są takie same jak dla mojego powyższego 71-znakowego rozwiązania Perl.
źródło
unpack
:-) Znalazłem rozwiązanie 69 znaków (87 z ładnym wyjściem mojego).Skorupa + Figlet (35)
źródło
-f banner
To pierwsza znaleziona przeze mnie czcionka, która używa # zamiast * lub | i _.Python
260 215 186152Python
196 183 130114 (ale brzydszy)Użyłem spakowanych danych w kodowaniu base64. a kod dekoduje go z kodowania base64, a następnie rozpakowuje.
źródło
PHP - 183 bajtów
Wykorzystanie sztuki ASCII sebcap26 jako źródła ...
źródło
Brainfuck, 372 bajtów
(Wiem. Ale tylko dla kompletności, musi być bzdura ^^ To nie będzie krótsze, ponieważ jest mało powtórzeń. Pętla pierwszej i drugiej linii już ...)
Tłumacz tutaj: http://koti.mbnet.fi/villes/php/bf.php
Łącząc generator liczb i obraz @ ASKASK z moimi pętlami i dodatkowe strojenie, otrzymujemy:
Brainfuck,
343 339 336334 bajtówWygląda jednak brzydiej niż moja oryginalna wersja.
(zdjęcie patrz odpowiedź @ ASKASK)
źródło
EcmaScript 6,
172161Wynik:
Wyjaśnienie:
źródło
return
instrukcja pierwszej grubej strzałki nie są konieczne.charCodeAt(0)
można zredukować docharCodeAt()
.Sclipting , 38 znaków (76 bajtów)
Wynik:
źródło
Brainfuck, 362 bajtów
Przepraszam @ johannes-h, widziałem twój i zainspirowałem się do stworzenia własnego. Wykorzystuje kombinację szybszego generowania liczb na początku i prostszego obrazu, aby wygenerować wynik w mniejszej liczbie bajtów. Nie używa jednak pętli nigdzie indziej, więc można go zoptymalizować.
który generuje:
źródło
ImageMagick + sed, 71 bajtów
Nie widzę żadnych innych wpisów ImageMagick, więc oto mój spóźniony udział w ziemi:
Myślę, że ta
sed
porcja może być jeszcze bardziej golfa.Wypróbuj online .
Wynik:
źródło
Postscriptum,
154133to znaczy
Jedynym źródłem ASCII, inspiracją dla sztuki ASCII była odpowiedź Johannesa H. :-)
(bardziej czytelny w terminalu)
Perl, 102
Taki sam wynik jak powyżej. Wiem, że przegrałem z powyższymi odpowiedziami Perla, ale i tak je publikuję. Przynajmniej próbowałem i jechałem we właściwym kierunku (i nie widziałem najkrótszej odpowiedzi) :-).
źródło
Pure Bash, bez zewnętrznych narzędzi - 133 znaków:
Wykorzystuje przesunięcie w prawo i w lewo (dzielenie i mnożenie przez 2) oraz xor, aby znaleźć jeden bit.
Dane czcionki skradzione z Blender / Ilmari Karonen.
Testowane w Bash 3.2 i 4.2
Nawiasem mówiąc, to tylko 166 znaków:
źródło
Python 3, 114
Wyjście (4-znakowy wysoki e i W skradziony z @Ilmari Karonen ):
I krótszy (107):
Wynik:
źródło
Python 154 znaków, (rozmiar Char 5X7)
Wydajność
źródło
Grzmotnąć:
(
10389 bajtów)Kod:
Wynik:
Mniejszy, ale mniej czytelny (na podstawie http://mckgyver.pbworks.com/f/1240440791/3PixelFont.jpg ):
Kod:
Wynik:
źródło
JavaScript / ES6 (108 bajtów)
Skopiuj do konsoli:
Wynik:
(Wymaga przeglądarki kompatybilnej z ECMAScript6, tj. Firefox 22+)
Inspirowany przez @maximeeuziere, @ p01, @aemkei
źródło
.join('\n')
można sprowadzić do.join(` `)
miejsca, w którym spacja jest rzeczywistym znakiem nowej linii.Autorzy: xem, aemkei, p01, jonas
Wykonaj to w konsoli JS.
JavaScript, przeglądarka,
133132126117 bajtówJavaScript, ES6, działa na Firefox, 108 bajtów
Wynik:
źródło
HTML, 209 znaków
Czy to się liczy? :)
źródło
Shell, 20 znaków:
Aby to zadziałało, oczywiście potrzebujesz
banner
programu. W systemie Debian można go uzyskać, instalującbsdmainutils
pakiet.Spowoduje to wydrukowanie pięknie wyrenderowanej wersji wiadomości, zaprojektowanej do drukowania na jednej ze starych drukarek z ciągłym podawaniem, dzięki czemu wynik powyższego tekstu ma długość 322 wierszy i szerokość 123 kolumn, a następnie odwracasz wydruk na bok, aby przeczytać wiadomość. Możesz zawiesić powstały papier na ścianie jako sztandar, stąd nazwa.
http://en.wikipedia.org/wiki/Banner_%28Unix%29
EDYCJA: Wygląda na to, że Debian ma również
sysvbanner
pakiet, który instaluje program bannerowy, który drukuje tekst w poziomie w celu wyświetlenia na terminalu. Jednak drukuje to tylko pierwsze 10 znaków wiadomości, więc jest to trochę denerwujące dla tego problemu z golfem!źródło
banner hello-world
.banner
jest dostępny dla praktycznie każdego systemu UNIX. Po prostu umieściłem pakiet Debian jako wygodny dowód, że nie wymyśliłem czegoś dla ludzi, którzy nie wiedzieli o tym. W dzisiejszych czasach nie spodziewałbym się, że będębanner
domyślnie zainstalowany w systemie UNIX, podobnie jak nie spodziewałbym się już, że znajdę drukarkę z ciągłym podawaniem w laboratorium komputerowym. Ale każdy golfowy kod przy tworzeniu tekstu banerowego naprawdę powinien miećbanner
gdzieś w nim program. To część naszej bogatej historii kultury jako maniaków komputerowych. :-)bash,
175170 bajtówMusisz zmarnować sporo postaci, aby uzyskać niezły wynik !
Wynik:
źródło
F # - 204 znaków
Wynik:
źródło
Python + pyfiglet - 87 znaków
Wydajność
Aby zainstalować
pyfiglet
, uruchom:źródło
Python z pyfiglet: 66 przy użyciu argv, 69 bez
66:
69:
jodły muszą być nazywane na przykład:
python asciiart.py „Hello-World!”
druga:
python asciiart.py.
Wynik:
(Cóż, wygląda to trochę kiepsko z tą czcionką. Niemniej :))
[edytuj] usunął przestarzałą myślnik z argumentu.
źródło
JavaScript 137 (134)
Używa bitów liczb całkowitych do przedstawienia ostrych i białych spacji. Testowane z Firefoksem 27.
137 znaków
134 znaków (obrócony o 180 °)
źródło
Python3 (126)
Pomiędzy znakami jest dodatkowa przestrzeń, aby była lepiej czytelna. Więc technicznie jest to rozwiązanie 125 znaków.
Wynik:
źródło
Bash
37, 33Który jest taki sam jak:
Z
man toilet
Ze
tr "'\"m" "#"
wszystkich"
znaków są zastępowane#
.źródło
tr
Parametry byłyby krótsze, niż te, które podano. Mam na myślitr \'\"m \#
zamiasttr "'\"m" "#"
.toilet
wyjściowe nie zawierały pojedynczego cudzysłowu. Dlaczego umieściłeś go wtr
1. parametrze? Wystarczytr \"m \#
.Smalltalk, 151
chociaż ta gra w golfa jest już zakończona, dla porównania:
wydajność:
źródło