Niestety jeden z największych pisarzy komiksów zmarł wczoraj po południu. Wiele hollywoodzkich gwiazd, muzyków, aktorów i wielu innych ludzi składa hołd temu wspaniałemu pisarzowi, więc musimy coś zrobić.
Wyzwanie
Wydrukuj logo Avengers
Uwaga: Możesz użyć dowolnej innej postaci zamiast # innej niż spacja; podczas gdy musisz użyć spacji do spacji
W ASCII-art
######
###############
##### ##########
#### ####### ####
### #### ### ###
### #### ### ###
### #### ### ###
### #### ### ###
### #### ### ###
### #### ### ###
### ########### ###
### ########### ###
### #### ### ###
### ### ### ###
#### #### ####
######## ######
#################
###
Opcjonalny
Kto był (Twoim zdaniem) jego największym bohaterem i złoczyńcą w całym uniwersum cudów?
Obowiązują standardowe zasady gry w golfa
code-golf
ascii-art
kolmogorov-complexity
Luis Felipe De Jesus Munoz
źródło
źródło
Odpowiedzi:
Galaretka ,
625958 bajtówDzięki @JonathanAllan za grę w golfa na 1 bajcie!
Wypróbuj online!
Jak to działa
jest bijective base-250 literal integer, który używa znaków na stronie kodowej Jelly jako cyfr.
Dosłownym koduje całkowite , które jest konwertowany na dwunastkowym otrzymując .10250938842396786963034911279002199266186481794751691439873548591280332406943905758890346943197901909163 30 b 620 b 40 b w 54 64771433841333139413468423468423467433467433466 b 466 b 465453465363431424 b 43896860 b o 3 1230 b 620 b 40 b a 54 a 64771433841333139413468423468423467433467433466 b 466 b 465453465363431424 b 43896860 b a 312
b12
Istnieje kilka zer, ponieważ 14 spacji (np.) Jest zakodowanych jako 3 spacje, 0 skrótów i 11 spacji. Dzięki temu podstawa jest niewielka (największy przebieg składa się z 17 skrótów), bez dodawania żadnej dodatkowej logiki do dekodera.
Ė
(wyliczenie) poprzedza każdą cyfrę podstawową 12 swoim indeksem 1, a następnieŒṙ
wykonuje dekodowanie długości przebiegu.Teraz dla każdej liczby całkowitej w wynikowej tablicy
Ḃ
wyodrębnia najmniej znaczący bit, a następniea⁶
(ORAZ spacja) zamienia je na spacje, pozostawiając niezmienione zera.Na koniec
s27
dzieli niesformatowaną tablicę znaków na fragmenty o długości 27, które sąY
oddzielane przez linie.źródło
R ,
198,173,163,157,144, 142 bajtyWypróbuj online!
R
Honoruje także wielkiego Stana.Uwagi:
#
użyliśmy znaku,4
ponieważ zapisuje 2 bajty i:4
wydaje się być mini „ukośnym”A
)Objaśnienie :
Zastosowanie kodowania długości przebiegu (
rle
funkcja) do znaków ciągu (z wyłączeniem'\n'
) zwraca 88 powtórzeń naprzemiennego<space>,<hash>,<space>,<hash>,<space>,<hash>...
.88 powtórzeń to wszystkie wartości z zakresu,
[1,17]
dlatego sumując64
otrzymujemy punkty kodowe liter[A...Q]
uzyskujących ciąg:"NFMOJEDJFDGGADCCHDACCCACIDACDFHDBCDFHDBCDFGDCCDFGDCCDFFKDFFKDFEDECDFECFCDCADBDKDCHIFHQJC"
Dlatego kod wykonuje w zasadzie przeciwne operacje:
źródło
#
, użycie0
zamiast"#"
powinno zaoszczędzić jeszcze 2 bajty. @ J.Doe, który może również działać lepiej dla twojego gzipa.Bubblegum ,
71666564 bajtówDzięki @ovs za grę w golfa z 1 bajtu!
Wypróbuj online!
źródło
#
celu!
.Python 2, 129 bajtów
Wypróbuj online!
źródło
\n
ciąg ze skompresowanego ciągu.Węgiel drzewny ,
716867 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Wyjściowa połowa koła.
Odbij go i narysuj na dole.
Narysuj lewe ramię i poprzeczkę litery A.
Narysuj prawe ramię A.
Zmień wszystkie znaki na
#
s.źródło
C (gcc) ,
244243242 bajtówWypróbuj online!
-1 dzięki Peter Cordes
-1 dzięki pułapkowi cat
Używa kompresji bitowej.
Wyjaśnienie:
Celem jest wydrukowanie zestawu liczb binarnych przy użyciu spacji i # jako cyfr reprezentujących logo. Odrobina magii bash przekształca logo w maski binarne:
Powoduje to, że binarne „liczby” są:
Na środku jest wyraźny wzór, w którym znajduje się każda linia
### ### ###
Możemy zaoszczędzić trochę miejsca, kompresując środkową sekcję w oparciu o zapisanie tego wzoru i OR-przeciw nim. Ponadto wszystkie te wiersze po prostu dodają pewne elementy po lewej stronie środkowej sekcji, więc tworzymy
z
makro, które pobiera??????????????
i konwertuje je na###??????????????### ###
. Wiąże się to z przesunięciem bitów w lewo o 10 i OR-owanie z wartością binarną tego wzorca, czyli 117441415.Teraz możemy łatwiej zrozumieć kod:
źródło
x?y:0
można zastąpićx&&y
lub czy pierwszeństwo operatora nie działa? Może z&
zamiast,
oddzielania 3 wywołań funkcji, ponieważ&
ma wyższy priorytet niż&&
lub,
( en.cppreference.com/w/c/language/operator_precedence ). Lub nie dlatego, że,
zapewnia tylko punkt sekwencji dla drukowania a rekurencji, aby uniknąć niezdefiniowanego zachowania.&&
Rzeczywiście nie działa z powodu pierwszeństwa, a jednocześnie&
nie powoduje zwarcia. Do tej pory nie znalazłem krótszej alternatywy, choć nie wykluczam jej.&
lub|
lub^
wymianę,
( ponieważ nie powodują zwarcia) i&&
wymianę?
(ponieważ tak się dzieje). Like_<19 && b() & puts() & main(_+1);
(dodano spacje dla czytelności). Kolejność ewaluacji jest niezdefiniowana, co może w rzeczywistości nieokreślone zachowanie z powodu niepożądanych skutków ubocznych nastdout
en.cppreference.com/w/c/language/eval_order , ale w praktyce dowolny kompilator wybierze pewną kolejność dla danego zestawu docelowego + opcjeT-SQL,
341338 bajtówPierwsze 4 łamanie wiersza służy wyłącznie do odczytu, ostatni podział wiersza jest częścią literału łańcucha.
Podobnie do mojego hołdu Adama Westa , ręcznie zakodowałem długi ciąg i dokonałem następujących zamian:
*7
zostaje zastąpiony przez+REPLICATE('#',7)
$4
zostaje zastąpiony przez+SPACE(4)
&
zostaje zastąpiony przez podział wiersza w cudzysłowiePowoduje to powstanie ogromnego ciągu poleceń SQL:
Które po uruchomieniu dają niezbędną moc wyjściową.
Długi, ale wciąż lepszy niż moje najlepsze rozwiązanie oparte na zestawie ( 463 bajty ):
źródło
CHAR(8000)
zamiastVARCHAR(max)
(ogromne polecenie to 1453 bajty)CHAR(2E3)
ale nie podobało mi się to. Zapisałem również bajt, używając zamiast literału podziału wierszaCHAR(13)
.Płótno ,
747371 bajtówWypróbuj tutaj!
źródło
JavaScript (ES6),
173170 bajtówWypróbuj online!
Node.js , 163 bajty
Pod warunkiem, że tablica ciągów jest prawidłowym wyjściem:
Wypróbuj online!
źródło
05AB1E ,
1018864 bajtów-24 bajty, tworząc port odpowiedzi @ Dennis ♦ Jelly .
Wypróbuj online.
Wyjaśnienie:
Zobacz moją wskazówkę 05AB1E (sekcje Jak kompresować duże liczby całkowite? I Jak kompresować listy liczb całkowitych? ), Aby zrozumieć, jak działa kompresja liczb całkowitych i list.
źródło
•∍ΔÎë,½=bOÅ.âαUΔ'òõƶαÔγλ#xÆ]~”FbćÁ˜Ð”wнQ_wā©•12вDg„ #s∍S×J27ô»
poprzez zastąpienie„#
iεN>yи}˜è
zDg„ #s∍S×
C (gcc) ,
174168164160 bajtów-6 bajtów dzięki Dennisowi.
Wypróbuj online!
źródło
/// , 170 bajtów
Wypróbuj online!
źródło
Bash ,
192176 bajtówWypróbuj online!
-16 dzięki manatwork
Jest to podobne do mojej odpowiedzi w C, z tym że używa tylko surowej kompresji base-16 i przepuszcza ją przez bc, a następnie używa tr do konwersji 1 na # i 0 na spację. Każdy rząd ma 1 dołączony do niego i zdjęty, aby zachować wyrównanie.
Niestety
dc
jest krótszy niżbc
.źródło
^
. Ale jeszcze lepiej, użyjcut -c2-
zamiastsed
części.echo
a nawet krótszy zdc
zamiastbc
: Wypróbuj online!echo
, ale dajdc
Haskell,
170163 bajtówEdycja: -7 bajtów dzięki @ Ørjan Johansen
Wypróbuj online!
Spacje są kodowane jako wielkie litery (długość:
Z
do znaku), znaki skrótu jako małe litery (długość:a
do znaku), a ostatnie trzy#
z każdej linii plus nowa linia jako spacja. Funkcjam
go dekoduje.źródło
"###\n"
.Perl 6 ,
136112 bajtówWypróbuj online!
Analizuje podstawową liczbę 128 z wartości porządkowych skompresowanego łańcucha, konwertuje na bazę 2 i zastępuje
1
s spacjami. Używa zer jako głównego bohatera. Ciąg ma około 9 bajtów zerowych, co było dziwką do wpisania w TIO. Użyłbym bazy 127 dla tej samej ilości bajtów, ale bez zer, ale ma to znak powrotu karetki, który wydaje się niemożliwy do odróżnienia od nowej linii:(
Wyjaśnienie:
źródło
J ,
130128 bajtówWypróbuj online!
Wstępne rozwiązanie
J , 164 bajty
Wypróbuj online!
źródło
PHP ,
286212209208 bajtówWypróbuj online!
źródło
Perl 5 , 181 bajtów
Wypróbuj online!
źródło
MATLAB : 144 bajty
Wypróbuj online! (Technicznie w oktawie)
Wyjaśnienie:
Używa tej samej strategii co digEmAll w R, tylko ze składnią MATLAB. Główną różnicą jest to, że MATLAB ma automatyczną konwersję znaków na liczby całkowite.
źródło
C # (.NET Core) , 199 bajtów
Wypróbuj online!
Stosuje to samo podejście, co moje rozwiązanie dla hołdu Adamowi Westowi .
źródło
Deadfish ~ ,
726723 bajtów-3 bajty dzięki @squid
Wypróbuj online!
Nigdy nie widziałem / nie czytałem Marvela i polegałem tylko na spoilerach, wydaje się, że Thanos jest najlepszy.
źródło
Maszyna Turinga, ale znacznie gorzej - 16913 bajtów
Wykonane za pomocą generatora programu ASCII_only
źródło
deflate, 79 bajtów
eJyVkcsJADAIQ ++ ZIpD9dyxUqrGUgjlpHvglXdqCJymk1yEiaRXEIOXzuBHCiKObReUxUzYaMdt2wmTBg / FmNXndgLRbNvL7ifsLfMw6iQ ==
źródło
deflate
języka, ponieważ wygląda on jak ciąg base64Brainf ***,
656652605 bajtówPętla na początku inicjuje taśmę do
Następnie reszta kodu generuje te znaki.
(-47 bajtów dzięki orthoplex)
źródło
T-SQL, 244 bajty
Gra w golfa:
Nie golfowany:
Wypróbuj wersję online bez golfa
źródło