Adam West zmarł i chciałbym uhonorować jego pamięć tutaj na PPCG, choć wątpię, by wiedział o naszym istnieniu. Chociaż istnieje wiele, wiele różnych rzeczy, z których ten człowiek jest znany, żadna nie jest bardziej widoczna niż jego rola jako oryginalnego batmana. Zawsze będę pamiętał mojego ojczyma, który do dziś ogląda starego szkolnego Batmana i Robina. Wyzwanie to ma charakter uproszczony i wcale nie odpowiada skomplikowanemu człowiekowi, jakim był Adam West. Jest to jednak najlepsze, co mogłem wymyślić, ponieważ jest to najbardziej kultowy obraz kariery mężczyzny.
Chciałem to opublikować wcześniej, ale czekałem, aż ktoś wymyśli coś lepszego.
Wyprowadza następujące (z lub bez końcowych spacji / nowych linii):
* *
**** * * ****
**** ******* ****
****** ******* ******
********* ********* *********
***********************************************
*************************************************
*************************************************
*************************************************
***********************************************
***** ********************* *****
**** *** ***** *** ****
** * *** * **
To jest golf golfowy , wygra najniższa liczba bajtów.
źródło
Odpowiedzi:
Galaretka , 44 bajty
Wypróbuj online!
Jak to działa
To jest literał liczbowy. Wszystkie znaki są zastępowane ich indeksami opartymi na 1 na stronie kodowej Jelly, wynik jest interpretowany jako podwójna liczba całkowita base-250, co daje
Następnie
b25
przekonwertować całkowitą do podstawy 25 io99
zastępuje 0 do 99 , otrzymującJx$
zastępuje j th bazowych 25 cyfr n z n kopii j , otrzymującTeraz
ị⁾ *
indeksuje się do pary znaków. Indeksowanie jest oparte na 1 i modułowe, więc liczby nieparzyste są zastępowane spacjami, nawet tymi z gwiazdkami. To dajes25
dzieli wynik na kawałki o długości 25 . Jeśli napiszemy każdy fragment we własnej linii, otrzymamyOdbicie atom
ŒB
palindromizes każda porcja przez dodanie odwróconą kopię bez jego pierwszej postaci, w wyniku czego otrzymanoNa koniec
Y
wprowadza rzeczywiste linie.źródło
“QƤḣọḲ£¿ẆịµñẒṢƊ¬ƒỤ2ỴÐ,ịṁ&Ḅ<ḋsḳn.⁷ṛḃṡ⁾6bḋeṁ’ṃ⁾ *s25ŒBY
jest wystarczająco krótki, bo ma 53 bajty ...Wordfuck ,
57612686 bajtówWydaje mi się, że użycie jego imienia jako kodu źródłowego sprawia Adamowi Westowi trochę honoru.
Wypróbuj online! (transpiled brainfuck)
Adam West śpiewa (dzięki @carusocomputing)
źródło
Python,
530529528524 bajtówźródło
B.pop(0)
nieco irytujące. Dlaczego nie odwrócićB
, abyś mógł używać znacznie wydajniejszego (i krótszego)B.pop()
?pop(0)
Musi przenieść wszystkie pozostałe elementy listy w dół jednym gnieździe. Jasne, dzieje się to z prędkością C, ale wciąż jest mniej wydajne niż wyskakiwanie z końca łańcucha.POP
,BIFF
,POW
,OOF
mnie wypluć co piłem na moim monitorze. Dzięki lol. +1.JavaScript (ES6),
148146 bajtówPróbny
Pokaż fragment kodu
źródło
Python,
149142 bajty7 bajtów zapisanych dzięki @ PM2Ring
źródło
x=''.join(s*int(k,36)for s,k in zip(' *'*3,l))
MATL ,
6159 bajtówWypróbuj online!
Jak to działa
Wykorzystuje to następujące standardowe techniki:
1
do11
, więc sekwencja długości przebiegów jest kompresowana przez konwersję zasad , z zasady11
na zasadę94
(drukowalne znaki ASCII z wyjątkiem pojedynczego cudzysłowu, który wymagałby ucieczki).źródło
[1:12 20 24 99]
, co utrudnia kompresję. Moja najlepsza próba to 60 bajtówY|
? Nie znam wystarczającej liczby bankomatów MATL, aby sprawdzić, czy jest on rzeczywiście krótszy ...[1:24 99]
I usunięty jeden bajt . Jeśli użyję[0:24]
(baza 25), nie wiem, jak zmienić0
się99
w kilka bajtówY|
nie działa w MATL / Octave, tak jak w Jelly / Python. W tym ostatnim0 or 99
daje 99 ...05AB1E , 47 bajtów
Wypróbuj online!
źródło
replace 99 trick
od niego (zapisano 4 bajty na prostej drodze). Wciąż szukam lepszego sposobu..∞
zamiast€û»
(mirrory domyślnie łączą listy na nowych liniach najpierw w starszej wersji, przed zastosowaniem lustra). Próbowałem też używać₂в
zamiast25в
, ale niestety sprężonego całkowita jest następnie 1 bajt już tak dobrze, więc nie ma nic zapisać:•2Ø°×á[1∊Œ)’˜Àå<тIÞ‡p5ÉQ•₂в
.vim,
168156 bajtówTo zakłada środowisko Unix
rev
. Używam dość prostego kodowania (liczenie, znak), przy czym N i A dołączają odpowiednio ai
*
odpowiednio, a B kopiuje i odwraca.W rzeczywistym pliku wpisy w nawiasach są zastępowane literalnymi bajtami, które reprezentują.
<C-v>
to 0x16,<ESC>
to 0x1b i<CR>
to 0x0d.Wypróbuj online
źródło
:nm N a <C-v><esc>
oraz:nm A a*<C-v><esc>
<C-v>
plik w pliku niż jest w rzeczywistości, więc użyłem metody ronda, aby móc go przetestować{ cat foo.vim; echo ':wq'; } | vim out.txt
. Nie jestem pewien, dlaczego nie przyszło mi do głowy, aby spróbować<C-v><C-v>
wczoraj.-v
Flaga pozwala używać vim kluczowych opisów (jak<C-v>
i etażerka)<NL>
zamiast<NEWLINE>
?Węgiel drzewny ,
69545248 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Edycja: Dzięki tylko @ ASCII, zapisano 4 bajty, przełączając się z oddzielnej flagi na zapętlanie indeksów,
7 bajtów, używającA kolejne 4 bajty, używając alfabetu do kodowania długości przebiegu. Zapisano kolejne 2 bajty, ponieważ⸿
znaku (nieudokumentowanego?) ,AtIndex
automatycznie pobiera moduł. Zapisano kolejne 4 bajty, ponieważMap
automatycznie tworzy zmienną indeksu. Wyjaśnienie:Zewnętrzne
Map
zwraca tablicę.Print
radzi sobie z tym, drukując każdy element na osobnej linii, unikając w ten sposób konieczności ręcznegoJoin
ich ustawiania\n
.Ciąg koduje wszystkie półwiersze wyniku. Litery naprzemienne odnoszą się do liczby
*
s i spacji (a=0
służy do obsługi wiersza rozpoczynającego się spacją). Spacja jest wygodnym wyborem ogranicznika, ale okazuje się, że dobrze się kompresuje (x kompresuje również do 55 bajtów). Każdy wiersz jest przetwarzany osobno. (Uwaga: deverbosifier nie usuwa separatora między skompresowanym i nieskompresowanym łańcuchem, w przeciwnym razie kod miałby,
czytelność.)Pętlę nad każdą literą, rozwijając do odpowiedniej liczby
*
s lub spacji. Zmiennam
jest do tego indeksem wewnętrznej pętliMap
, podczas gdyl
zawiera literę. Wynik jest następnieJoin
edytowany w pojedynczy ciąg przy użyciu predefiniowanego pustego ciąguw
.Po wydrukowaniu wszystkich wierszy odzwierciedl wszystko po lewej stronie, zachodząc na środkową kolumnę.
Próbowałem obsługiwać znaki nowej linii, spacje i gwiazdy w jednej pętli, ale tak naprawdę zajęło to jeszcze dwa bajty:
źródło
Clojure,
833437 bajtówNiemal z definicji Clojure nigdy nie zdobędzie żadnych nagród dla zwięzłości, ale nie mogę się doczekać KAŻDY cera tygodnia do dwóch (count „em - DWA ) odcinków Batman (! Same Bat-czas, to samo Bat-kanałowy) To jasne, że nie ma nie ma czasu do stracenia!
Szybko, Robin - do Bat-REPL !!!
Wersja bez gry w golfa:
RIP Adam West. Bez względu na to, jak absurdalne były te programy, ci z nas, którzy byli dziećmi, pozdrawiają was.
źródło
C (gcc) , 191 bajtów
Wypróbuj online!
źródło
Różne rozwiązania, wszystkie wykorzystujące kodowanie długości przebiegu, z różnymi technikami kodowania danych RLE.
Python 3,
125121 bajtówTa wersja używa
bytes
ciągu do przechowywania danych.Niech
s
będzie ciąg gwiazd lub spacji. Następnien
kodowanie bajtóws
podajePython 2,
133126 bajtówTa wersja wykorzystuje kodowanie alfabetyczne. Wartość literowa określa długość ciągu wyjściowego, wielkość liter określa, czy składa się ze spacji, czy gwiazd.
Moje oryginalne 133 bajtowe rozwiązanie Python 2.
Ta wersja wykorzystuje ciągi zerowej długości, dzięki czemu może łatwo przełączać się między ciągami gwiazdowymi i kosmicznymi.
Dla zabawy, oto jedna linijka z alfabetycznym kodowaniem.
Python 2, 148 bajtów
Dla jeszcze większej zabawy, oto wzór w Game of Life Conwaya, który generuje wersję logo Batmana. Musiałem podwoić każdą linię, aby zachować proporcje mniej więcej takie same jak w wersji tekstowej. Ten wzór nie naprawdę obliczyć logo (chociaż to jest możliwe do wykonania obliczeń w życiu - to Turing-complete), to po prostu odtwarza go z pętli pamięci, więc myślę, że nie można zakładać go jako wpisu kod golfa (choć I tak go utworzyć za pomocą skryptu Pythona napisałem kilka lat temu). ;)
Jest zakodowany w dość standardowym formacie RLE, który może załadować większość silników Life. Jeśli nie masz programu GoL (np. Golly ), możesz go zobaczyć w akcji online dzięki temu silnikowi Life , który może importować pliki Life RLE. Oto wersja tego wzoru życia w formacie PNG , niektóre programy życia (w tym Golly) mogą ładować wzorce życia z plików PNG i różnych innych formatów plików obrazów.
źródło
T-SQL,
283 276222 bajtówImplementowanie kompresji GZIP oryginalnego ciągu batmana, za pomocą metody zamieszczonej tutaj . Działa to tylko w SQL 2016 i nowszych.
W przypadku wcześniejszych wersji SQL użyj mojej poprzedniej metody ( 276 bajtów ):
Zasadniczo ręcznie koduję gigantyczny ciąg znaków, który określa, co wydrukować w następnej kolejności, przy użyciu następującej metody:
#7
zostaje zastąpiony przez+REPLICATE('*',7)
$4
zostaje zastąpiony przez+SPACE(4)
&
zostaje zastąpiony przez+CHAR(13)
Po zamianie wygląda cały ciąg znaków 958 (z podziałem wierszy w każdym wierszu w symbolu Batmana:
Który jest wykonywany jako dynamiczny SQL, dając następujące dane wyjściowe:
źródło
PHP , 137 bajtów
Wypróbuj online!
PHP , 177 bajtów
Wypróbuj online!
PHP , 179 bajtów
Wypróbuj online!
źródło
Java,
296214 bajtówGra w golfa:
Nie golfowany:
źródło
";1I1074:151:4054<7<4036<7<6029999901_10a10a10a01_0257E570447345437407271636172"
do danych, i pofor(char a:x){a=(int)a-48; [...]
prostu dodaje 48 do każdej liczby i konwertuje je na ich ekwiwalent ascii char. Wierzę, że pozwoli ci to zaoszczędzić 70-80 bajtów. Również wierzę, że kodowanie danych do Lamba również zmniejszy bajty.boolean b=false;
może byćboolean b=1<0
, albo nawet lepiej można używaćint
, a także łączyć się z deklaracji dlai
tej samej linii).i
pętli for, myślę, że możesz użyć jejfor(int i=0;i++<a-48;)
jakofor
-head.Bubblegum , 75
zrzut xxd:
Wypróbuj online .
źródło
Coffeescript (282 bajtów)
Wyjaśnienie (przy użyciu zwykłego ES6)
źródło
V , 102 bajtów
Wypróbuj online!
Hexdump:
Wykorzystuje to kodowanie długości przebiegu do wygenerowania następującej połowy batmana:
A następnie odwraca i duplikuje każdą linię.
źródło
Python 2 , 134 bajty
Wypróbuj online!
Długość przebiegu koduje każdą linię od lewej połowy w podstawie 36. Odzwierciedla ją, aby utworzyć pełną linię, która jest drukowana. Wiodące spacje nie są kodowane; zamiast tego lewa połowa jest wyściełana do długości 25.
źródło
Mathematica 151 bajtów
Tani i mało kreatywny. Łańcuch pochodzi z wbudowanej
Compress
komendy użytej na wymaganym wyjściu.Aktualizacja:
Myślę, że mogę zrobić lepiej z wbudowanymi funkcjami
ImportString
\,ExportString
ale nie widzę, abyExportString
poprawnie skopiować i wkleić wynikowe ciągi . Na przykładNie mogę skopiować tekstu z drugiego wiersza, aby zastąpić go
%
w trzecim wierszu.źródło
Bash ,
407322 bajtyWypróbuj online!
naprawdę okropne, potrzebujesz więcej czasu lub pomóż w golfa. generuje wynik z 0 na 1 i transliteruje na końcu. Zakodowane w cyfrach szesnastkowych ilość 0 i 1, uważając, aby ostatnia cyfra 0 dla pierwszych dwóch wierszy była flagą wyjściową środkowej kolumny. Używa nacisku printf na cyfrę lub ciąg znaków, aby wyprowadzić 0 i 1. myśl, że
%.$[0x${X}]C
wzorzec może być użyty do golfa.źródło
Python 3,
232197183164 bajtówJeszcze inna odpowiedź w języku Python. Brak nudnego kodu kompresji. Ekscytujący kod kompresji.
Używam magicznej liczby 35, ponieważ w ten sposób nie występują żadne znaki kontrolne, spacje lub rzeczy, które należałoby uciec. Smutne, że muszę osobno przetwarzać przestrzenie i gwiazdy, co trochę mnie kosztuje.
Nie golfowany:
źródło
print
połączenie na tej samej linii, cofor
. 2 Jeśli używasz ciągubytes
znaków, możesz pozbyć się tychord
połączeń. 3 Możesz zastąpićrange
plik zip za pomocą pary iteratorów. Oto generator, który łączy oba te pomysły:((u-35)*" "+(v-35)*"*"for u,v in zip(*[iter(s)]*2))
. Zmiany te spowodują zmniejszenie liczby do 164.PowerShell, 305 bajtów,
307 bajtów,316 bajtówMoże ktoś inny może mi pomóc w dalszym skróceniu tego, choć nie potrafię tego zrozumieć, chyba że istnieje bardziej zwięzły sposób zdefiniowania niestandardowego typu akceleratora.
Edycja: Skrócona wersja (dzięki @root). Zakodowany ciąg (kodowanie przed base64) może zostać przycięty o osiem pozycji macierzy, dzięki czemu zasięg może zostać zmniejszony. Nie jestem pewien, dlaczego StreamWriter wprowadza ten wzdęcie do MemoryStream. Doceniony zostanie wgląd w podstawowe zachowanie.
Nie golfowany:
Kod kompresji:
źródło
[IO.StreamReader]::new(([IO.Compression.GZipStream]::new([IO.MemoryStream]::new(([Convert]::FromBase64String('H4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbuHBUsBqAgAA')),0,102),[IO.Compression.CompressionMode]::Decompress))).ReadToEnd()
$ms.ToArray()
są równe 0. Czy są konieczne?('225','193','82','192','106','2','0','0')
można usunąć, aby utworzyćH4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbg==
. Nie rozumiem, skąd pochodzą.Perl 5, 168 bajtów
Zwróć uwagę na spację na końcu tylko pierwszego wiersza. Wymaga
-M5.01
, co jest bezpłatne.Prawdopodobnie można grać w golfa nieco więcej.
źródło
LaTeX, 314 bajtów
Wersja bez golfa z objaśnieniami:
źródło
C # (.NET Core) ,
342 333 328 185175 bajtówWypróbuj online!
Dużo bajtów zapisanych po zmianie podejścia. Biorąc rysunek za tablicę 2D, obliczyłem kodowanie RLE według plików:
Wskaźniki nieparzyste oznaczają
s, a nawet wskaźniki oznaczają
*
s. Następnie zastąpiłem każdą liczbę drukowaną reprezentacją ASCII (przyjmując znak „#” jako 1) i otrzymałem:Algorytm po prostu oblicza rysunek, dekompresując ten ciąg i dodając nowe wiersze w odpowiednich miejscach.
źródło
l
zmiennej, wystarczy użyć jej bezpośrednio w pętli..ToString(i, 2)
->.ToString(i,2)
tj. usuń białe znaki.1e10
) dla tych liczb? To wyzwanie jest tutaj pomocne.PowerShell ,
129128 bajtówWypróbuj online!
Nie golfowany:
Wynik:
Główna idea jest bardzo prosta
Kodowanie godła:
Dekodowanie (ten skrypt):
Length
razyNiektóre mądre rzeczy
½
nas*t
(73 gwiazdki, 0 spacji, 74 gwiazdki).Dodatkowo: Scipt do kodowania godła
źródło
Mathematica, 271 bajtów
źródło
Braingolf ,
590580579577428423312 bajtów-111 bajtów, ponieważ LeakyNun jest bogiem golfa
Wypróbuj online!
Braingolf nie jest dobry w sztuce ASCII, ale do cholery próbowałem.
Nie ma mowy, do diabła, wyjaśniam ten klaster **
źródło
/// ,
171166 bajtów5 bajtów zapisanych, ponieważ używałem
\r\n
w źródle, lol.Wypróbuj online!
Kompresowany przy użyciu kolejnych iteracji zastępowania „najbardziej ekonomicznych” podciągów pojedynczym znakiem. Jest to prawie optymalne, choć może się zdarzyć jedna z dwóch rzeczy:
źródło