Wprowadzenie
26 sierpnia 2017 r. Floyd Mayweather Jr. zmierzy się z Conorem McGregorem w meczu bokserskim.
Obaj uczestnicy otrzymają fenomenalną kwotę 100 milionów dolarów!
Niestety nie mamy jeszcze pieniędzy, ale możemy już przygotować dużą teczkę, która będzie zawierać wszystkie banknoty.
_________________________
| |
|=======================================|
| $ $$$$$ $$$$$ $ $ |
| $ $ $ $ $ $ $$$ $$$ |
| $ $ $ $ $ $ $$$ $ |
| $ $$$$$ $$$$$ $ $ |
|_______________________________________|
Teczka składa się z _
, |
, =
i $
.
Ma rozmiar 41 znaków szerokości (ignorując znaki nowej linii) i 6 znaków wysokości (+2 dla uchwytu).
Wyzwanie
Bez danych wejściowych napisz pełny program do wydrukowania teczki 2D (patrz wyżej).
Wynik
To jest golf golfowy , więc wygrywa najkrótsze rozwiązanie (w bajtach).
Odpowiedzi:
Bubblegum, 55 bajtów
Prawdopodobnie możliwe jest wykonanie magicznej operacji usuwania nagłówka, ale nie jestem tak dobry jak Dennis!
Wypróbuj online!
źródło
Galaretka ,
9275 bajtówWypróbuj online!
W jaki sposób?
Krok 1. Zbuduj listę rzędów prawej połowy pustej teczki, ignorując końcowe spacje:
Krok 2: Przekształć to w pustą teczkę:
Krok 3: Pokaż mi pieniądze!
źródło
JavaScript (ES6),
187184 bajtówW jaki sposób?
Dane wyjściowe są budowane przy użyciu tych 16 unikalnych wzorów:
Próbny
Pokaż fragment kodu
źródło
05AB1E , 80 bajtów
Wypróbuj online!
Wyjaśnienie
Podstawowy zarys teczki:
05AB1E , 41 bajtów
Wypróbuj online!
Wyjaśnienie częściowe (część pierwsza):
Przekształciłem ogólny projekt, dzieląc go na pół, zastępując wszystkie znaki 2-6, a na koniec przekształcając go w bazę 255 i odtwarzając kształt, używając
5
jako separatora nowej linii.To liczba wyrażona w podstawie 255, a jej konwersja do podstawy 6 to ...
Później, podzielenie tego na piątki, tworzenie kopii lustrzanych i dołączanie przez nowe linie, powoduje, że ...
Wyjaśnienie częściowe (część druga):
Zaczynasz widzieć, dokąd to zmierza? Następnie kompresuję wewnętrzny wzorzec jako ciąg base-255:
Który jest:
Konwertuj na binarny:
Dla każdego z tych znaków zastąp spację kolejnym znakiem, iteracyjnie:
Na koniec zamień postacie na takie, jakie powinny być.
Za stratę:
Kompresując go jako dwa oddzielne wzorce, oszczędzam 20 bajtów:
Który jest:
Przekształcony w base-10:
92 bajty plus transliteracja, co daje w sumie około 105.
źródło
SOGL ,
5857 bajtówWyjaśnienie:
Wypróbuj tutaj!
54 bajty ( konkurujące? )
Użyto tu polecenia
╥
- palendromize, które działało tylko na ciągach, ale zostało również udokumentowane dla tablic . (obecnie jest zaimplementowany tylko w tłumaczu online)Wypróbuj tutaj!
źródło
PHP, 117 bajtów
Przykro mi, że nie ma nic krótszego niż leniwe podejście - gzip ciąg i koduj go base64:
Kompresja niestandardowa: 188 bajtów
168 164 159 152151 bajtów z adaptacją pomysłu oficjalnego :Linie mogą być postrzegane jako mapa bitowa między znakiem granicznym (spacje dla pierwszych dwóch, potem rura), ze spacją jako
0
i innym znakiem jako1
.Odwrócenie linii 3 i 8 dało im wartość
0
, więc mogłem przesunąć wszystkie wartości o 6 bitów.Tablica zawiera mapy bitowe (przekonwertowane na bazę 34; ale tylko 7 wartości - ósmy element jest pomijany, a pusty element również ocenia
0
). Baza 35 również by działała; ale podstawa 33 ma dłuższe wartości, a podstawa 36 wymagałaby jeszcze jednej podanej wartości.Ciąg zawiera granicę
0
i1
znaki w tej kolejności dla każdej linii (pomijając ostatni znak, ponieważ linie 3 i 8 nie wymagają1
znaku, bez ustawionego bitu).Kompresja niestandardowa według Jörga,
159156 bajtów :źródło
Galaretka , 114 bajtów
Wypróbuj online!
źródło
Braingolf , 267 bajtów
Wypróbuj online!
Więc golfa ...
źródło
/// , 155 bajtów
Wypróbuj online!
Uwielbiam, kiedy /// może konkurować.
Wyjaśnienie:
Działa to poprzez zdefiniowanie typowych zamienników takich jak
$$$$$
, a następnie zdefiniowanie meta-zamienników obejmujących oryginalne zamienniki.Bardziej dogłębne:
Po pierwsze, jedyną cechą /// jest jego
/pattern/replacement/
składnia i możliwość użycia ukośników odwrotnych, aby uciec przed innymi ukośnikami odwrotnymi i ukośnikami. Ta informacja jest ważna w wyjaśnieniu.Pierwszy wzorzec / zamiennik w kodzie służy wyłącznie do gry w golfa (i szczegółowo tutaj ). Zastępuje
~
się//
, więc wynikowy kod wygląda następująco:Następnie wykonuje się kilka podstawowych zamienników. Niektóre polegają na innych (meta-zamienniki), ale tabela zamienników wygląda następująco (kod zawarty w
`
s):Meta-zamienniki tutaj są takie jak
/&/%$$/
. Pobiera już istniejący zamiennik$$$
i używa go do zdefiniowania nowego zamiennika$$$$$
.Potem są bardzo duże zamienniki. Pierwsze zastępuje jeden
9
z$ $ $ $ $ $
a drugi zastępuje8
z:Zwróć uwagę na końcowe spacje.
Następnie wszystkie te zamienniki są używane w następującym ciągu:
Aby uzyskać żądaną moc wyjściową.
źródło
Python 2 ,
221 205 197 196193 bajtówa="6ZBRS533| $"
ib="70JYF0U7|"
Wypróbuj online!
Wyjaśnienie:
Każda linia ma ogólną formę,
pup
gdziep
jest znakiem granicznym, a u jest łańcuchem z dwoma unikalnymi znakami (dla każdej linii), które mogą być reprezentowane przez 1 i 0. Na przykład, linia 5 to:| $ $ $ $ $ $ $$$ $$$ |
Ma | jako znak graniczny, a środkowy ciąg zawiera tylko
i
$
. Środkowy ciąg może być reprezentowany przez:111011101101110110111011000111000111111
Teraz ten ciąg binarny może być reprezentowany przez 36-podstawową liczbę:
6JNFT2RJ
Możemy reprezentować wszystkie linie za pomocą łańcucha ostatecznego wraz z łańcuchem 36-bazowym, znakiem granicznym i znakami użytymi w ciągu środkowym w następujący sposób:
Możemy w ten sposób zdekompresować ciąg base-36 (po wyciągnięciu go z ciągu ostatecznego) na ciąg binarny, zastąpić 1 i 0 znakami (również uzyskanymi z ciągu ostatecznego) użytymi w środkowym ciągu i skleić znaki graniczne na obu końcach . W ten sposób uzyskuje się wymagany ciąg.
źródło
C,
415402397 bajtówWypróbuj online!
źródło
Retina ,
140137129 bajtów-3 bajty dzięki @Neil
Wypróbuj online!
źródło
1
s do niczego innego, nie możesz pisać$*<space>
bezpośrednio?C (gcc) ,
388386302 bajtówWypróbuj online!
źródło
05AB1E , 121 bajtów
Wypróbuj online!
źródło
JavaScript (ES6),
177166 bajtówCiąg zawiera kolekcję znaków do wyświetlenia wraz z liczbą powtórzeń. Jeśli znak nie jest powtarzany, liczbę razy można pominąć.
Powtarzane ciągi znaków są optymalizowane przez zapisanie w zmiennych
r
is
.Skrawek:
źródło
Python 2 , 135 bajtów
Wypróbuj online!
źródło
Węgiel , 52 bajty
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Wydrukuj lewą połowę teczki.
Przygotuj kursor, aby skompresowany ciąg mógł zostać wydrukowany bezpośrednio po odbiciu. (Wprowadzenie ruchu w dół po odbiciu lub zanim skompresowany łańcuch zmieni swoje znaczenie.)
Zastanów się, aby dokończyć teczkę.
Wydrukuj kwotę jako skompresowany ciąg. (Niestety, było to najkrótsze podejście, ponieważ w przeciwnym razie
M
zużyło się zbyt wiele bajtów).źródło