„Jako dziecko powiedziano mi, że Pająki nie odczuwają żadnych emocji”.

65

Wyzwanie: wyświetl w oknie tę dokładną grafikę ASCII pajęczyny:

 _______________________________
|\_____________________________/|
||    \         |         /    ||
||     \       /|\       /     ||
||     /\'.__.' : '.__.'/\     ||
|| __.'  \      |      /  '.__ ||
||'.     /\'---':'---'/\     .'||
||\ '. /'  \__ _|_ __/  '\ .' /||
|| |  /.   /\ ' : ' /\   .\  | ||
|| |  | './  \ _|_ /  \.' |  | ||
||/ '/.  /'. // : \\ .'\  .\' \||
||__/___/___/_\(+)/_\___\___\__||
||  \   \   \ /(O)\ /   /   /  ||
||\ .\'  \.' \\_:_// './  '/. /||
|| |  | .'\  /  |  \  /'. |  | ||
|| |  \'   \/_._:_._\/   '/  | ||
||/ .' \   /    |    \   / '. \||
||.'_   '\/.---.:.---.\/'   _'.||
||   '.  / __   |   __ \  .'   ||
||     \/.'  '. : .'  '.\/     ||
||     /       \|/       \     ||
||____/_________|_________\____||
|/_____________________________\|

Źródło: Joan Stark (nieznacznie zmodyfikowany pająk i rama oraz usuń inicjały ze względu na wyzwanie).

Wymagane znaki: _|\/'.:-(+)O(12) + spacja i nowa linia (2)

Zasady konkursu:

  • Dozwolone jest jedno lub wiele końcowych spacji i / lub nowych wierszy.

Główne zasady:

  • To jest , więc wygrywa najkrótsza odpowiedź w bajtach.
    Nie pozwól, aby języki gry w golfa zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania.
  • Do odpowiedzi odnoszą się standardowe reguły , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami, pełnych programów. Twoja decyzja.
  • Domyślne luki są zabronione.
  • Jeśli to możliwe, dodaj link z testem swojego kodu.
  • W razie potrzeby dodaj również wyjaśnienie.
Kevin Cruijssen
źródło
25
Powinienem był zapisać to na Halloween.
steenbergh
2
@steenbergh Hmm, rzeczywiście masz rację! Ach, do tego czasu wymyślę coś nowego. :)
Kevin Cruijssen
3
Jest .7 znaków przed O. Czy po tym ma być też 7 znaków?
Neil,
7
Co cytujesz w tytule?
lazarusL
21
@lazarusL Nie jest to bezpośredni cytat, ale wdowa z Overwatch: „ Kiedy byłam dziewczynką, bałam się pająków. Powiedziano mi, że nie odczuwają emocji, że ich serca nigdy nie biją. Ale znam prawdę. W tej chwili zabójstwa, nigdy nie są bardziej żywi. ”( Animated short:„ Alive ” )
Kevin Cruijssen

Odpowiedzi:

29

SOGL V0.12 , 141 bajtów

↑υΒΦøAo┼Λ■MšH⅛ K∞ΠΘK2╬{t÷ωÆ↓p║9<¤ΓuΞ∫⅛Χxc<Π³‼čΝ═ūψ°ņR⁷|└η▒°Mψ{√ΥΜ┌>½Ψ¹iš℮ē@‰‚ηΨ▓+⁰ρ→ƨ┘ο\β¶⁹ξA6‘'²nΓ:A⌡≥¹↕Ζ,'ŗa;+"⁴ø'½ø' Æ ⁄Æ    ø'⁄ø'Æ∑O’3n{_ζž

Wyjaśnienie:

...‘                             push a quarter of the drawing
    '²n                          split into an array of items of length 17
       Γ                         palendromize horizontally, with overlap of 1
        :A                       save a copy of that on `A`
          ⌡≥¹                    reverse items in the array (for each item put it at the stacks bottom, then wrap in array)
             ↕                   vertically mirror chars (it tries its best but still has bugs)
              Ζ,'ŗ               replace ","s with "'"s (one of the bugs)
                  a              push the variable A
                   ;+            reverse add
                     "..’        push a list of codepage characters
                         3n{     for each group of 3 do
                            _      put all the arrays contents on the stack
                             ζ     convert the last from number to its codepage character
                              ž    replace [at X 1st number, Y 2nd number, with the 3rd number converted to character]

Wypróbuj tutaj! (program zawiera zakładki, więc tutaj jest lepsza reprezentacja programu)

dzaima
źródło
28
„robi wszystko, co w jego mocy, ale wciąż ma błędy” z pewnością posiadanie błędów jest przydatne, gdy próbuje się zakłócać pająka
Niedźwiedź
8
@Bear mając błędy w oknie byłoby przydatne ... pod ręką, nie tyle.
user253751
58

Arnold C, 1257 1261 1256 1233 bajtów

IT'S SHOWTIME
TALK TO THE HAND" _______________________________"
TALK TO THE HAND"|\_____________________________/|"
TALK TO THE HAND"||    \         |         /    ||"
TALK TO THE HAND"||     \       /|\       /     ||"
TALK TO THE HAND"||     /\'.__.' : '.__.'/\     ||"
TALK TO THE HAND"|| __.'  \      |      /  '.__ ||"
TALK TO THE HAND"||'.     /\'---':'---'/\     .'||"
TALK TO THE HAND"||\ '. /'  \__ _|_ __/  '\ .' /||"
TALK TO THE HAND"|| |  /.   /\ ' : ' /\   .\  | ||"
TALK TO THE HAND"|| |  | './  \ _|_ /  \.' |  | ||"
TALK TO THE HAND"||/ '/.  /'. // : \\ .'\  .\' \||"
TALK TO THE HAND"||__/___/___/_\(+)/_\___\___\__||"
TALK TO THE HAND"||  \   \   \ /(O)\ /   /   /  ||"
TALK TO THE HAND"||\ .\'  \.' \\_:_// './  '/. /||"
TALK TO THE HAND"|| |  | .'\  /  |  \  /'. |  | ||"
TALK TO THE HAND"|| |  \'   \/_._:_._\/   '/  | ||"
TALK TO THE HAND"||/ .' \   /    |    \   / '. \||"
TALK TO THE HAND"||.'_   '\/.---.:.---.\/'   _'.||"
TALK TO THE HAND"||   '.  / __   |   __ \  .'   ||"
TALK TO THE HAND"||     \/.'  '. : .'  '.\/     ||"
TALK TO THE HAND"||     /       \|/       \     ||"
TALK TO THE HAND"||____/_________|_________\____||"
TALK TO THE HAND"|/_____________________________\|"
YOU HAVE BEEN TERMINATED

To jest moja pierwsza próba programowania w najwyższym języku, więc zjem swoje przeglądy, ponieważ nie oferuję inteligentnego rozwiązania tego problemu, chociaż programowanie w języku wywodzącym się z niebios.

Oto kompilator, jeśli ktoś przypadkiem kwestionuje ten algorytm.

Czekać.

bearacuda13
źródło
13
Hej Arnold, masz pająka na ręce!
Olivier Grégoire,
9
Przestań jęczeć! - Arnold
bearacuda13
13
Gdyby więcej golfistów miało poczucie humoru, częściej oglądałbym grę.
can-ned_food
3
Czy potrafisz zagrać w bajt, usuwając pustą linię? Kompilator przestał narzekać, kiedy to zrobiłem.
Olivier Grégoire,
15
54 głosujących za odpowiedzią, która nie stanowi próby gry w golfa? potrząsa głową Możesz zaoszczędzić 23 bajty po prostu usuwając wszystkie spacje po TALK TO THE HAND!
Kudłaty
24

vim, 373 371 bajtów

A ________________
|\_______________
||    \         |
||     \       /|
||     /\'.__.' :
|| __.'  \      |
||'.     /\'---':
||\ '. /'  \__ _|
|| |  /.   /\ ' :
|| |  | './  \ _|
||/ '/.  /'. // :
||__/___/___/_\(+<ESC>:2,12y
Gp
:13,$g/^/m12
:17
8lr jr.ggqayyp!!rev
!!tr '\\/(' '/\\)'
kgJxjq23@a
:13,$!tr "\\\\/.'+" "/\\\\'.O"
qa/_
r ka
<ESC>k:s/ $/_/e
gJjhq33@aGk:s/ /_/g
gg$x

<ESC> jest standinsem dla 0x1B.

Bez golfa

" First quadrant
A ________________
|\_______________
||    \         |
||     \       /|
||     /\'.__.' :
|| __.'  \      |
||'.     /\'---':
||\ '. /'  \__ _|
|| |  /.   /\ ' :
|| |  | './  \ _|
||/ '/.  /'. // :
||__/___/___/_\(+<ESC> 

" Copy to lower half, reverse lines, substitute characters
:2,12y
Gp
:,$g/^/m12

" Non-symmetric part
:17
8lr jr.

" copy left side to right and reverse
ggqayyp!!rev
!!tr '\\/(' '/\\)'
kgJxjq
23@a

" swap characters on the bottom half
:13,$!tr "\\\\/.'+" "/\\\\'.O"

" shift underscores up one line wherever an empty space is available
qa/_
r ka
<ESC>k:s/ $/_/e
gJjhq
33@a

" misc
Gk:s/ /_/g
gg$x

Wypróbuj online!

I aby wyjaśnić wyjaśnienie, które otrzymałeś jako dziecko: Chociaż prawdą jest, że jedyne emocje, które osobiście odczuwają, to nienawiść, są one w stanie wyczuć strach z odległości ponad 50 metrów.

Promień
źródło
Nie możesz bazować na wejściach vima? : D
YSC
@YSC Obawiam się, że wersja zakodowana w standardzie base64 może być mniej czytelna. :-)
Ray
Rozumiem, że muszę nacisnąć <kbd> Enter </kbd> tam, gdzie jest napisane, <CR>ale czy linie kończące się na <CR>średnim uderzają dwukrotnie? Wydaje się, że w dwóch powyższych przypadkach odpowiedź brzmi „ nie” , ale linie z s/ /_/gi trnie kończą się na, <CR>ale nie mogę uruchomić go bez naciśnięcia Enter.
antak
@antak Podwójne znaki <CR>były błędem i działa także podawanie linii. (Wprowadzałem wiersze za pomocą <C-v><ENTER>, który generuje <CR>; dlatego pokazuje się jako ^Mzamiast nowej linii). Zmodyfikowałem kod, aby wyeliminować te dwa duplikaty i zastąpić znaki powrotu karetki normalnymi znakami nowej linii / linii. Wszystkie pozostałe znaki nowego wiersza należy wprowadzić dokładnie raz. (Wersja bez golfa nadal ma kilka dodatkowych pustych linii; te nie odpowiadają faktycznym naciśnięciom klawiszy. Wersja z golfem jest dokładnie tym, co należy wpisać, z wyjątkiem <ESC>s.)
Ray
1
@Jakob Jeśli umieścisz te bajty w pliku i przekierujesz dane wejściowe do vima, wynikiem będzie bufor zawierający tekst docelowy. W praktyce zostanie to przetestowane { cat foo.vim; echo ':wq'; } | vim a.txt, abyś nie utknął w vimie bez klawiatury podłączonej do standardowego wejścia. Zaletą jest to, że mogę uruchomić program bezpośrednio z pliku, zamiast próbować wpisywać go dokładnie przy każdej zmianie. W przypadku tego programu bajty i naciśnięcia klawiszy są równoważne, ale nie zawsze tak jest. np <C-v><ENTER>jest trzy naciśnięcia klawiszy, ale produkuje jeden bajt \r.
Ray
17

Galaretka ,  206  205 bajtów

“¢ṙgḤi¹z,:ṃ,açØẹȷE€İ%ĿœHFḢ®QṀẠṠṄ⁻Ṃç|ɠḌɱỌ⁴¦EṇÐ0tḊhƇtƬ©2:⁶ṂƊḄÞḌḶh_ịÑḶụ ɼh ⁵¶Ẏ=ɗuȯuṙæg⁹-©ɲdʠẹḶrU[ȦƁƊ@ȮLQ+İøA¶ȷØḤ©<ṿŀUrçȦ£ḞRzµ¢°ỊnçṄI¤`Ẉ⁾ẠaIkXṫ_Ẹ²ʋfƬ@²*#`cẓʋ⁷\"s’b9+“ṖṘṇọ‘¦3ị“ |\/'.:-(+O_”s17µŒBy@€“(\/“)/\”a⁸Y

Niladyczny link zwracający listę znaków lub pełny program drukujący grafikę.

Wypróbuj online!

Czy można zastosować symetrię zgrubną-pionową?

W jaki sposób?

Pierwsze 158 bajtów to bardzo duża liczba zapisana w bazie dwusuwowej 250 przy użyciu pierwszych 250 bajtów strony kodowej Jelly:

“¢ṙgḤi¹z,:ṃ,açØẹȷE€İ%ĿœHFḢ®QṀẠṠṄ⁻Ṃç|ɠḌɱỌ⁴¦EṇÐ0tḊhƇtƬ©2:⁶ṂƊḄÞḌḶh_ịÑḶụ ɼh ⁵¶Ẏ=ɗuȯuṙæg⁹-©ɲdʠẹḶrU[ȦƁƊ@ȮLQ+İøA¶ȷØḤ©<ṿŀUrçȦ£ḞRzµ¢°ỊnçṄI¤`Ẉ⁾ẠaIkXṫ_Ẹ²ʋfƬ@²*#`cẓʋ⁷\"s’

Numer ten (rzędu 10 372 przeprowadza się w wykazie cyfr bazy-9 (391 liczb od 0 do 8), a następnie trzy dodaje się do 203 III , 204 TH , 220 TH i 221 st cyfr ( który będzie ciałem pająka):

“ ... ’b9+“ṖṘṇọ‘¦3
“ ... ’            - that huge number
       b9          - converted to a list of digits of it's base-9 representation
                ¦  - sparse application at indexes:
          “ṖṘṇọ‘   - ... code-page indexes = [203,204,220,221]
         +       3 -     add three

Wynik jest następnie konwertowany na 12 znaków z lewej strony (do środkowej kolumny włącznie):

... ị“ |\/'.:-(+O_”s17
...                    - the previous code
     “ |\/'.:-(+O_”    - the characters used in the left-hand side = " |\/'.:-(+O_"
    ị                  - index into
                       - ... note: adding three to the 6s, 7 and 8 makes the spider's body
                       -     from what would otherwise have been a collection of
                       -     the characters ".:-". Also note 0s become '_'s.
                   s17 - split into chunks of length 17 (separate the rows)

Pełne wiersze są następnie zbudowany odbijając każdy wiersz po lewej stronie (która odzwierciedla to, jak gdyby jego ostatni znak były zwierciadłem), zmieniając wszystko( do )The \aby /i /do \, a następnie tylko przy użyciu nowych wartości po prawej stronie -ręczna strona za pomocą wektoryzacji andz lewą stroną z wcześniej. Rezultat jest w końcu połączony z nowymi liniami, aby stworzyć sztukę:

... µŒBy@€“(\/“)/\”a⁸Y
...                    - the previous code
    µ                  - monadic chain separation - call the result L
     ŒB                - bounce each row of L
          “(\/“)/\”    - list of lists of characters: [['(','\','/'],[')','/','\']]
       y@€             - for €ach (row) translate (with swapped @rguments)
                       - ... replaces '(' with ')', '\' with '/' and '/' with '\'
                    ⁸  - chain's left argument, L
                   a   - logical and (vectorises) with L
                       - ... use characters from L if we have them, else the new ones.
                     Y - join with newlines
                       - if running as a full program: implicit print
Jonathan Allan
źródło
Nigdy nie widziałem tak długiego kodu Jelly. ; _; wew
RedClover
11

Węgiel , 239 238 bajtów

UR¹⁶¦²²P×_¹⁶↘¹”“1T↘H‖⌕⦄Q⌈⌀MH⁷鱫cJε⎚#÷‖↧⸿ÿ_M±Gςθx↥<]˜t~⁻?T\`⪫F№⮌ξv‹⎇αδ¹9∨q¢←6X$⪫SA‹¤ü‖§D‹v⁸)⮌s?ANHτ!‰ZNσE⟲—>£'αlT↙№%Mü‴⟲@ιRQ$⟧.ηψf◧4\™¬‴χe@“σXN±I%T↧~w—A⁵6ζ▶‴À$“UX0⁰Ÿβ˜¤c⁷DFQm→>H⟧∨^‹α~ok∨A1ψς9œ⁸}'¶$β”P×_¹⁴M↓P×_¹⁵←_/↑²² P×_¹⁶M⁵¦²P↘⁸M¹⁹↓↗⁸‖B

Wypróbuj online! Link jest do pełnej wersji kodu. Większość z nich polega po prostu na drukowaniu dużego skompresowanego łańcucha, ale powtarzające się części zostały zakodowane oddzielnie, aby zmniejszyć długość łańcucha; w szczególności Rectangleoszczędza wiele bajtów, unikając wypełniania spacją, aby dotrzeć do 17. kolumny, a nawet ukośne linie oszczędzają bajt każdy.

Rectangle(16, 22);          For the |s in the 2nd and 17th columns
Multiprint(Times("_", 16)); Overwrite the 2nd row with _s
Print(:DownRight, 1);       Print the \ in row 2, column 2
Print(<compressed string>); Print the bulk of the web
Multiprint(Times("_" 14))   Print the _s in the penultimate row
Move(:Down);
Multiprint(Times("_" 15));  Overwrite the bottom row with _s
Print(:Left, "_/");         Print the / in the bottom row
Print(:Up, 22);             Print the |s in the 1st column
Print(" ");
Multiprint(Times("_" 16));  Print the `_`s in the 1st row
Jump(5, 2);
Multiprint(:DownRight, 8);  Print a long diagonal line
Move(19 :Down);
Print(:UpRight, 8);         Print the other long diagonal line
ReflectButterfly();         Mirror the first 16 columns (17th is axis)

Edycja: Wydaje się, że węgiel drzewny nie rozpoznaje już skompresowanego ciągu, a jego bieżąca kompresja generuje krótszy ciąg, który oszczędza 51 bajtów i pozwala na przesunięcie jednej z linii przekątnych z powrotem do łańcucha dla dalszego 2-bajtowego zapisu. (Pamiętaj, że nie są to liczby wyświetlane przez -sl; w rzeczywistości nawet pierwotna liczba wydaje się być wyłączona o 1). Istnieją jednak trzy dodatkowe oszczędności, które dotyczyłyby również oryginalnego kodu: Wypróbuj online!

  • 1 bajt za pomocą ( Box) zamiast UR( Rectangle).
  • 1 bajt przy użyciu ↙P×_¹⁶←/zamiast ↓P×_¹⁵←_/.
  • 1 bajt przy użyciu ×_¹⁶J⁵¦¹zamiast P×_¹⁶M⁵¦².
Neil
źródło
10

PHP , 380 bajtów

<?=gzinflate(base64_decode("fZLNrQMxCITvqYIbiZ4W7ttEGhiJRij+MfgnGyWKJSx2Pf4GY0v8HrfEz3XPW6bUgKyRO/P+XIot8cRVcFE41CJM5ZSROC6KXlmU3AQqh0JtUY7j0LPnSTBtBUotTkrtiawIElDrVVa7FNitKdJ1SBMMtNyKLI6zFjKY1P7cChclwunlxQD5IEQFrSjbWIH736PmymfMfkBW+P35QDdrxjwLeW0NxBll1UXR2y+VtrV3xzCKyrezECLwsGJYgBbql7OQvy9z3SO95llMg1vgVv22s2ewxxJq6255NV7dnoxK2A99fx/OH6U8ZST4eB/z3SB39lLE7OgYubN+wFS8Fr8N5D8="));

Wypróbuj online!

PHP , 494 bajty

<?=strtr(" 33311
|43331/|
||554222|222/550254255/|4255/25025/4817 : 817/4250 175422|22/581 0825/\'6':'6'/425704 8 /'541 _|_ 1/5'4 7 /0 |5/.2/4 ' : ' /42.45| 0 |5| 8/54 _|_ /547 |5| 0/ '/.5/8 // : 44 745.4' 401/1_/1_/_4(+)/_41_41_410542424 /(O)4 /2/2/504 .4'547 44_:_// 8/5'/. /0 |5| 745/5|545/8 |5| 0 |54'24/_._:_._4/2'/5| 0/ 7 42/55|5542/ 8 407_2'4/.6.:.6.4/'2_'.02'.5/ 12|21 45720254/758 : 7584/25025/2554|/255425011/3|3411||
|/3331\|",["||
||",__,"   ",_________,"\\","  ","---",".'","'."]);

Wypróbuj online!

Jörg Hülsermann
źródło
9

pieprzenie mózgu , 4086 bajtów

-[+>++[++<]>]>-[->+>+<<]>>--------------------------------------[->+>+<<]>>++[->+>+<<]>>---[->+>+<<]>>+++++[->+>+<<]>>+++++++++++++[->+>+<<]>>------------[->+>+<<]>>-------[->+>+<<]>>++++++++[->+>+<<]>>+++++++++++++++++++++++++++++++++++++++++++++[->+>+<<]>>++++++++++++++++++++++++++++++++[->+>+<<]>>------------------------------------------------------------------------------------------------------------------[->+>+<<]>>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++[->+>+<<]>>---------------------------------------------------------------.<...............................<<.<<.<<.>>>>>>.............................<<<<<<<<.>>>>.>>.<<..>>>>>....<<<<<<<.>>>>>>>.........<<<<<.>>>>>.........<<<<<<<<<.>>>>>>>>>....<<<<<..>>.<<..>>>>>.....<<<<<<<.>>>>>>>.......<<<<<<<<<.>>>>.<<.>>>>>>>.......<<<<<<<<<.>>>>>>>>>.....<<<<<..>>.<<..>>>>>.....<<<<<<<<<.>>.<<<<.<<.>>>>>>>>>>>>..<<<<<<<<<<<<.>>.>>>>>>>>>>>.<<<<<<<<<<<<<<<.>>>>>>>>>>>>>>>.<<<<<<<<<<<.<<.>>>>>>>>>>>>..<<<<<<<<<<<<.>>.>>.>>.>>>>>>>.....<<<<<..>>.<<..>>>>>.<..<<<<<<<<<<<<.>>.>>>>>>>>>>>..<<<<<<<.>>>>>>>......<<<<<.>>>>>......<<<<<<<<<.>>>>>>>>>..<<<<<<<<<<<.<<.>>>>>>>>>>>>..>.<<<<<..>>.<<..<<<<<<.<<.>>>>>>>>>>>>>.....<<<<<<<<<.>>.<<<<.<<<<<<...>>>>>>.<<<<.>>>>.<<<<<<...>>>>>>.>>.>>.>>>>>>>.....<<<<<<<<<<<<<.>>.>>>>>>..>>.<<..<<.>>>>>>>.<<<<<<<<<<<.<<.>>>>>>>>>>>>>.<<<<<<<<<.<<.>>>>>>>>>>>..<<<<<<<.>>>>>>..>.<.<<<<.>>>>.>.<..<<<<<<<<.>>>>>>>>>..<<<<<<<<<<<.>>>>.>>>>>>>.<<<<<<<<<<<<<.>>.>>>>>>>>>>>.<<<<<<<<<.>>>>..>>.<<..>>>>>.<<<<<.>>>>>..<<<<<<<<<.<<<<.>>>>>>>>>>>>>...<<<<<<<<<.>>.>>>>>>>.<<<<<<<<<<<.>>>>>>>>>>>.<<<<<<<<<<<<<<<.>>>>>>>>>>>>>>>.<<<<<<<<<<<.>>>>>>>>>>>.<<<<<<<<<.>>.>>>>>>>...<<<<<<<<<<<<<.>>>>>>.>>>>>>>..<<<<<.>>>>>.<<<<<..>>.<<..>>>>>.<<<<<.>>>>>..<<<<<.>>>>>.<<<<<<<<<<<.<<.>>>>.>>>>>>>>>..<<<<<<<.>>>>>>>.<.<<<<.>>>>.>.<<<<<<<<<.>>>>>>>>>..<<<<<<<.<<<<<<.>>.>>>>>>>>>>>.<<<<<.>>>>>..<<<<<.>>>>>.<<<<<..>>.<<..<<<<.>>>>>>>>>.<<<<<<<<<<<.>>.<<<<.>>>>>>>>>>>>>..<<<<<<<<<.<<.<<.>>>>>>>>>>>>>.<<<<<<<<<..>>>>>>>>>.<<<<<<<<<<<<<<<.>>>>>>>>>>>>>>>.<<<<<<<..>>>>>>>.<<<<<<<<<<<<<.>>.>>>>.>>>>>>>..<<<<<<<<<<<<<.>>>>>>.<<<<.>>>>>>>>>>>.<<<<<<<.>>..>>.<<..>>>>..<<<<<<<<.>>>>>>>>...<<<<<<<<.>>>>>>>>...<<<<<<<<.>>>>>>>>.<<<<<<.<<<<<<<<<<<<.<<.<<.>>>>>>>>>>>>>>.>>>>>>>>.<<<<<<.>>>>>>...<<<<<<.>>>>>>...<<<<<<.>>>>>>..<<<<..>>.<<..>>>>>..<<<<<<<.>>>>>>>...<<<<<<<.>>>>>>>...<<<<<<<.>>>>>>>.<<<<<<<<<.<<<<<<<<<<.<<<<<<.>>.>>>>>>>>>>>>>>>>.>>>>>>>.<<<<<<<<<.>>>>>>>>>...<<<<<<<<<.>>>>>>>>>...<<<<<<<<<.>>>>>>>>>..<<<<<..>>.<<..<<.>>>>>>>.<<<<<<<<<<<<<.>>>>>>.<<<<.>>>>>>>>>>>..<<<<<<<.<<<<<<.>>.>>>>>>>>>>>.<<<<<<<..>>>>>>.<<<<<<<<<<<<<<.>>>>>>>>>>>>>>.<<<<<<<<..>>>>>>>>>.<<<<<<<<<<<.<<.>>>>.>>>>>>>>>..<<<<<<<<<<<.>>.<<<<.>>>>>>>>>>>>>.<<<<<<<<<.>>>>..>>.<<..>>>>>.<<<<<.>>>>>..<<<<<.>>>>>.<<<<<<<<<<<<<.>>.>>>>.>>>>>>>..<<<<<<<<<.>>>>>>>>>..<<<<<.>>>>>..<<<<<<<.>>>>>>>..<<<<<<<<<.<<.<<.>>>>>>>>>>>>>.<<<<<.>>>>>..<<<<<.>>>>>.<<<<<..>>.<<..>>>>>.<<<<<.>>>>>..<<<<<<<.<<<<.>>>>>>>>>>>...<<<<<<<.<<.>>>>>>>>.<<<<<<<<<<<<.>>>>>>>>>>>>.<<<<<<<<<<<<<<.>>>>>>>>>>>>>>.<<<<<<<<<<<<.>>>>>>>>>>>>.<<<<<<.<<.>>>>>>>>>...<<<<<<<<<<<.>>.>>>>>>>>>..<<<<<.>>>>>.<<<<<..>>.<<..<<<<.>>>>>>>>>.<<<<<<<<<<<<<.>>.>>>>>>>>>>>.<<<<<<<.>>>>>>>...<<<<<<<<<.>>>>>>>>>....<<<<<.>>>>>....<<<<<<<.>>>>>>>...<<<<<<<<<.>>>>>>>>>.<<<<<<<<<<<.<<.>>>>>>>>>>>>>.<<<<<<<.>>..>>.<<..<<<<<<<<.>>.>>>>>>>>>>.>...<<<<<<<<<<<.>>>>.<<.<<<<.<<<<...>>>>.<<.>>.<<<<...>>>>.>>>>>>.<<.<<.>>>>>>>>>>>...<.<<<<<<<<<<.<<.>>>>>>>>..>>.<<..>>>>>...<<<<<<<<<<<.<<.>>>>>>>>>>>>>..<<<<<<<<<.>>>>>>>>>.<..>...<<<<<.>>>>>...<..>.<<<<<<<.>>>>>>>..<<<<<<<<<<<<<.>>.>>>>>>>>>>>...<<<<<..>>.<<..>>>>>.....<<<<<<<.<<.<<<<.>>.>>>>>>>>>>>..<<<<<<<<<<<.<<.>>>>>>>>>>>>>.<<<<<<<<<<<<<<<.>>>>>>>>>>>>>>>.<<<<<<<<<<<<<.>>.>>>>>>>>>>>..<<<<<<<<<<<.<<.>>>>>>.<<.>>>>>>>>>.....<<<<<..>>.<<..>>>>>.....<<<<<<<<<.>>>>>>>>>.......<<<<<<<.>>.<<<<.>>>>>>>>>.......<<<<<<<.>>>>>>>.....<<<<<..>>.<<..>>>>....<<<<<<<<.>>>>>>>>.........<<<<.>>>>.........<<<<<<.>>>>>>....<<<<..>>.<<.<<<<.>>>>>>>>.............................<<<<<<.>>.

Wypróbuj online!

To tylko metoda „ciągnij i wybierz” w celu wygenerowania łańcucha.

Dodano nowe wiersze dla większej czytelności:

-[+>++[++<]>]>-[->+>+<<]>>--------------------------------------[->+>+<<]>>++[->+>+<<]>>
---[->+>+<<]>>+++++[->+>+<<]>>+++++++++++++[->+>+<<]>>------------[->+>+<<]>>-------[->+
>+<<]>>++++++++[->+>+<<]>>+++++++++++++++++++++++++++++++++++++++++++++[->+>+<<]>>++++++
++++++++++++++++++++++++++[->+>+<<]>>---------------------------------------------------
---------------------------------------------------------------[->+>+<<]>>++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++[->+>+<<]>>------
---------------------------------------------------------.<.............................
..<<.<<.<<.>>>>>>.............................<<<<<<<<.>>>>.>>.<<..>>>>>....<<<<<<<.>>>>
>>>.........<<<<<.>>>>>.........<<<<<<<<<.>>>>>>>>>....<<<<<..>>.<<..>>>>>.....<<<<<<<.>
>>>>>>.......<<<<<<<<<.>>>>.<<.>>>>>>>.......<<<<<<<<<.>>>>>>>>>.....<<<<<..>>.<<..>>>>>
.....<<<<<<<<<.>>.<<<<.<<.>>>>>>>>>>>>..<<<<<<<<<<<<.>>.>>>>>>>>>>>.<<<<<<<<<<<<<<<.>>>>
>>>>>>>>>>>.<<<<<<<<<<<.<<.>>>>>>>>>>>>..<<<<<<<<<<<<.>>.>>.>>.>>>>>>>.....<<<<<..>>.<<.
.>>>>>.<..<<<<<<<<<<<<.>>.>>>>>>>>>>>..<<<<<<<.>>>>>>>......<<<<<.>>>>>......<<<<<<<<<.>
>>>>>>>>..<<<<<<<<<<<.<<.>>>>>>>>>>>>..>.<<<<<..>>.<<..<<<<<<.<<.>>>>>>>>>>>>>.....<<<<<
<<<<.>>.<<<<.<<<<<<...>>>>>>.<<<<.>>>>.<<<<<<...>>>>>>.>>.>>.>>>>>>>.....<<<<<<<<<<<<<.>
>.>>>>>>..>>.<<..<<.>>>>>>>.<<<<<<<<<<<.<<.>>>>>>>>>>>>>.<<<<<<<<<.<<.>>>>>>>>>>>..<<<<<
<<.>>>>>>..>.<.<<<<.>>>>.>.<..<<<<<<<<.>>>>>>>>>..<<<<<<<<<<<.>>>>.>>>>>>>.<<<<<<<<<<<<<
.>>.>>>>>>>>>>>.<<<<<<<<<.>>>>..>>.<<..>>>>>.<<<<<.>>>>>..<<<<<<<<<.<<<<.>>>>>>>>>>>>>..
.<<<<<<<<<.>>.>>>>>>>.<<<<<<<<<<<.>>>>>>>>>>>.<<<<<<<<<<<<<<<.>>>>>>>>>>>>>>>.<<<<<<<<<<
<.>>>>>>>>>>>.<<<<<<<<<.>>.>>>>>>>...<<<<<<<<<<<<<.>>>>>>.>>>>>>>..<<<<<.>>>>>.<<<<<..>>
.<<..>>>>>.<<<<<.>>>>>..<<<<<.>>>>>.<<<<<<<<<<<.<<.>>>>.>>>>>>>>>..<<<<<<<.>>>>>>>.<.<<<
<.>>>>.>.<<<<<<<<<.>>>>>>>>>..<<<<<<<.<<<<<<.>>.>>>>>>>>>>>.<<<<<.>>>>>..<<<<<.>>>>>.<<<
<<..>>.<<..<<<<.>>>>>>>>>.<<<<<<<<<<<.>>.<<<<.>>>>>>>>>>>>>..<<<<<<<<<.<<.<<.>>>>>>>>>>>
>>.<<<<<<<<<..>>>>>>>>>.<<<<<<<<<<<<<<<.>>>>>>>>>>>>>>>.<<<<<<<..>>>>>>>.<<<<<<<<<<<<<.>
>.>>>>.>>>>>>>..<<<<<<<<<<<<<.>>>>>>.<<<<.>>>>>>>>>>>.<<<<<<<.>>..>>.<<..>>>>..<<<<<<<<.
>>>>>>>>...<<<<<<<<.>>>>>>>>...<<<<<<<<.>>>>>>>>.<<<<<<.<<<<<<<<<<<<.<<.<<.>>>>>>>>>>>>>
>.>>>>>>>>.<<<<<<.>>>>>>...<<<<<<.>>>>>>...<<<<<<.>>>>>>..<<<<..>>.<<..>>>>>..<<<<<<<.>>
>>>>>...<<<<<<<.>>>>>>>...<<<<<<<.>>>>>>>.<<<<<<<<<.<<<<<<<<<<.<<<<<<.>>.>>>>>>>>>>>>>>>
>.>>>>>>>.<<<<<<<<<.>>>>>>>>>...<<<<<<<<<.>>>>>>>>>...<<<<<<<<<.>>>>>>>>>..<<<<<..>>.<<.
.<<.>>>>>>>.<<<<<<<<<<<<<.>>>>>>.<<<<.>>>>>>>>>>>..<<<<<<<.<<<<<<.>>.>>>>>>>>>>>.<<<<<<<
..>>>>>>.<<<<<<<<<<<<<<.>>>>>>>>>>>>>>.<<<<<<<<..>>>>>>>>>.<<<<<<<<<<<.<<.>>>>.>>>>>>>>>
..<<<<<<<<<<<.>>.<<<<.>>>>>>>>>>>>>.<<<<<<<<<.>>>>..>>.<<..>>>>>.<<<<<.>>>>>..<<<<<.>>>>
>.<<<<<<<<<<<<<.>>.>>>>.>>>>>>>..<<<<<<<<<.>>>>>>>>>..<<<<<.>>>>>..<<<<<<<.>>>>>>>..<<<<
<<<<<.<<.<<.>>>>>>>>>>>>>.<<<<<.>>>>>..<<<<<.>>>>>.<<<<<..>>.<<..>>>>>.<<<<<.>>>>>..<<<<
<<<.<<<<.>>>>>>>>>>>...<<<<<<<.<<.>>>>>>>>.<<<<<<<<<<<<.>>>>>>>>>>>>.<<<<<<<<<<<<<<.>>>>
>>>>>>>>>>.<<<<<<<<<<<<.>>>>>>>>>>>>.<<<<<<.<<.>>>>>>>>>...<<<<<<<<<<<.>>.>>>>>>>>>..<<<
<<.>>>>>.<<<<<..>>.<<..<<<<.>>>>>>>>>.<<<<<<<<<<<<<.>>.>>>>>>>>>>>.<<<<<<<.>>>>>>>...<<<
<<<<<<.>>>>>>>>>....<<<<<.>>>>>....<<<<<<<.>>>>>>>...<<<<<<<<<.>>>>>>>>>.<<<<<<<<<<<.<<.
>>>>>>>>>>>>>.<<<<<<<.>>..>>.<<..<<<<<<<<.>>.>>>>>>>>>>.>...<<<<<<<<<<<.>>>>.<<.<<<<.<<<
<...>>>>.<<.>>.<<<<...>>>>.>>>>>>.<<.<<.>>>>>>>>>>>...<.<<<<<<<<<<.<<.>>>>>>>>..>>.<<..>
>>>>...<<<<<<<<<<<.<<.>>>>>>>>>>>>>..<<<<<<<<<.>>>>>>>>>.<..>...<<<<<.>>>>>...<..>.<<<<<
<<.>>>>>>>..<<<<<<<<<<<<<.>>.>>>>>>>>>>>...<<<<<..>>.<<..>>>>>.....<<<<<<<.<<.<<<<.>>.>>
>>>>>>>>>..<<<<<<<<<<<.<<.>>>>>>>>>>>>>.<<<<<<<<<<<<<<<.>>>>>>>>>>>>>>>.<<<<<<<<<<<<<.>>
.>>>>>>>>>>>..<<<<<<<<<<<.<<.>>>>>>.<<.>>>>>>>>>.....<<<<<..>>.<<..>>>>>.....<<<<<<<<<.>
>>>>>>>>.......<<<<<<<.>>.<<<<.>>>>>>>>>.......<<<<<<<.>>>>>>>.....<<<<<..>>.<<..>>>>...
.<<<<<<<<.>>>>>>>>.........<<<<.>>>>.........<<<<<<.>>>>>>....<<<<..>>.<<.<<<<.>>>>>>>>.
............................<<<<<<.>>.
Conor O'Brien
źródło
1
Czy jest jakiś konkretny powód, dla którego masz, np. ---------------------------------------------------------------Zamiast czegoś takiego >++++++++[-<-------->]<+?
Ray
@Ray Próbowałem użyć jako małe komórki, jak to możliwe, aby zminimalizować liczbę >s i <s wydaje się później w kodzie. Nie wiem, ile bajtów (jeśli w ogóle) zapisuje moje podejście. Spróbuję użyć więcej komórek.
Conor O'Brien
1
Możesz użyć tyle dodatkowych komórek, ile chcesz podczas fazy inicjalizacji, bez wpływu na >>>sekwencje później, ponieważ są one po prostu używane jako tymczasowe miejsce dla faktoryzacji. W szczególności, jeśli wypełnisz komórki od lewej do prawej, możesz użyć np. Komórki 5 jako tymczasowej przestrzeni do konfiguracji komórki 4, a następnie (ponieważ komórka 5 jest zerowana w procesie ustawiania komórki 4), zapisz nową wartość w komórce 5, używając komórki 6 jako przestrzeni tymczasowej. Tak długo, jak końcowe wartości komórek pozostają niezmienione, możesz zmienić wszystko przed pierwszym .bez konieczności modyfikacji późniejszego kodu.
Ray
@ Ray Dobra uwaga, przyjrzę się temu.
Conor O'Brien
Dang, pokonałeś mój :)
Graviton
8

JavaScript (ES6), 471 bajtów

Pakowane z wariantem RegPack ES6 .

let f =

_=>[..."ghijklmnopqrstuvwxyz{}~"].reduce((p,c)=>(l=p.split(c)).join(l.pop()),` mx
|zm/gq~r~wq~ws~{wrw/|rw/w{w/zvxuovxu/zw{ xu~r~~q~~svx {vw/z'n':'n'/zwu{pvj'~zx _|_ xs'puj{ q/.y/p'o'jh.r| {tvsp_|_ szut{i'/.~/vj/ozpur.z' z{x/l/l/_z(+)/_zlzlzx{~hhp/(O)p/y/ys{p.z'~zu zz_:_/ivs'/.j{tursqr/vt{ qz'yk_._:_._ky's| {iu hs~q~hiv z{u_y'k.n.:.n.k'y_v{yv~ixy|yx ruy{wku~vou~vkw{wswz|swzw{xx/}|}zxx|g/mz|y }xxxl{|g|z\\y~ l_w~yv'.u.'t q| s/~rz~q|~pz o : n---m}}}xlx_kz/j /i/ hzyg|
|`)

o.innerHTML = f()
<pre id=o></pre>

Arnauld
źródło
8

Java (JDK) , 494 bajty

n->{String r="",m="ZZO+():-\n'.\\/_| ";for(int b:"ýaÝøëaÜèîb¿bbïbbÏÿþèîbûbÿüëbÿübþèîbü¹­ÚŸošÝ©ËbþèîýÚŸûbÿïbüÿšÝþèîšbü¹wyiwyËbúžèî¿šüŸûÝýíýÜÿ›úŸÎèîþÿÊÿü¿ŸoŸËÿú¿þþèîþÿïšÏûýíüÿºŸïþþèîÏœ¯üšüÏo»ú›ÿ«Ÿ¾èîÝÍÝÍÝÍ´5ͽݽݽÞèîÿ¿ÿ¿ÿ¿Ä%¿ÏÿÏÿÏþèî¿«Ÿû©û½mÌù¬ÿœ¯Îèîþÿï©¿üÿïûÿɯïþþèîþÿ¹ÿûÍ­m­¼ÿùÏþþèîÏ©ûÿübïÿûÿüù¯¾èî©ßÿ›Êwzjwz¼ŸÿÙ®èîÿù¯üýßÿïÿÝûÿ©ÿþèîbûÊŸù¯o©ÿš¼bþèîbübÿûìbÿûbþèîÝÝÍÝÝÝÝíÝÝÝݽÝÞèìaÛè".replace("a","Ý".repeat(14)).replace("b","ÿÿ").getBytes("cp1252"))r=r+m.charAt(b>>4&15)+m.charAt(b&15);return r;}

Wypróbuj online!

Dzięki Kevin Cruijssen za grę w golfa kilka bajtów plus 6 bajtów przez zmianę Windows-1252na cp1252i na ASCII-tylko po to, aby nieco skompresować ciąg :)

Uwaga: plik musi być zakodowany jako Windows-1252 do liczenia bajtów, ale można go bezpiecznie skopiować / wkleić w UTF-8 do testowania!

Długi łańcuch jest tak naprawdę ciągiem, podobnie jak jego znaki odwzorowane na elastyczny koder znaków (raz cieszę się, że mogę użyć CP-1252). Reszta to tylko metoda odwzorowywania.

Mapowanie znaleziono przy użyciu permutacji, najpierw zainicjowanej na częstotliwość każdego znaku w sztuce ascii. Mapowania powodując bohaterów '"'i '\\'zostały wyraźnie odrzucone być najkrótsza prawidłowy ciąg, jak to możliwe.

Bez golfa

unusedVariable -> {
  String r = "",                   // result buffer
         m = "ZZO+():-\n'.\\/_| ", // mapping
    ;
  for (int b :
     "ýaÝøëaÜèîb¿bbïbbÏÿþèîbûbÿüëbÿübþèîbü¹­ÚŸošÝ©ËbþèîýÚŸûbÿïbüÿšÝþèîšbü¹wyiwyËbúžèî¿šüŸûÝýíýÜÿ›úŸÎèîþÿÊÿü¿ŸoŸËÿú¿þþèîþÿïšÏûýíüÿºŸïþþèîÏœ¯üšüÏo»ú›ÿ«Ÿ¾èîÝÍÝÍÝÍ´5ͽݽݽÞèîÿ¿ÿ¿ÿ¿Ä%¿ÏÿÏÿÏþèî¿«Ÿû©û½mÌù¬ÿœ¯Îèîþÿï©¿üÿïûÿɯïþþèîþÿ¹ÿûÍ­m­¼ÿùÏþþèîÏ©ûÿübïÿûÿüù¯¾èî©ßÿ›Êwzjwz¼ŸÿÙ®èîÿù¯üýßÿïÿÝûÿ©ÿþèîbûÊŸù¯o©ÿš¼bþèîbübÿûìbÿûbþèîÝÝÍÝÝÝÝíÝÝÝݽÝÞèìaÛè"
       .getBytes("cp1252")) { // Read bytes from the String, using CP-1252
    r = r                                    // r += doesn't work as expected here
        + m.charAt(b>>4 & 15)                // append first char
        + m.charAt(b & 15)                   // append second char
      ;
  }
  return r;
};

Odkrycie mapowania

public static void main(String[] args) throws Exception {
  String characters = "O+():-\n.'\\/|_ "; // All characters of the web, ordered up by frequency
  PermUtil perm = new PermUtil(characters.toCharArray()); // Tool for a fast permutation of a char[].
  outer:
  for (int p = 0; p < 100000000; p++) {
    String mapping = "ZZ" + new String(perm.next());
    String printableMapping = mapping.replace("\\", "\\\\").replace("\n", "\\n");
    byte[] bytes = new byte[WEB.length() / 2];
    for (int i = 0; i < bytes.length; i++) {
      int b = bytes[i] = (byte) ((mapping.indexOf(WEB.charAt(i * 2)) << 4) + mapping.indexOf(WEB.charAt(i * 2 + 1)));
      b &= 0xff;
      if (b < 0x20                                       // Unmappable CP-1252
          || b==0x81||b==0x8d||b==0x8d||b==0x8d||b==0x8d // Invalid CP-1252
          || b==0x22||b==0x5c) {                         // '"' and '\\'
        continue outer;
      }
    }
    System.out.printf("Mapping = \"%s\"%n", printableMapping);
    System.out.printf("Result  = \"%s\"%n", new String(bytes, "Windows-1252"));
    return;
  }
}
Olivier Grégoire
źródło
1
Dobra odpowiedź +1! Przy okazji, możesz zapisać bajt, zmieniając ()postać na losową. Nigdy nie powiedział nic o żadnym wejściu, dzięki czemu można wykorzystać nieużywany Objectktóry jest nulljako wejście. Odpowiedni meta-post. . Aha, możesz zapisać kolejny bajt, zmieniając bytena intw pętli dla każdego.
Kevin Cruijssen
2
@Nathan Nope, nie mogę :(, ponieważ r+=a;jest równoważne znakom r = r + (a)i ze znakami, co oznacza, że ​​są dodawane do siebie przed połączeniem, więc są teraz uważane za ints, a wynikowy ciąg jest podobny 127190190190190190190190190190.... Napisałem skomentuj to w wersji bez golfa;)
Olivier Grégoire,
1
Wiem, że minęło trochę czasu, ale Windows-1252można grać w golfa cp1252. Wyjaśnienie tutaj.
Kevin Cruijssen
1
dlaczego nie to ????? (dlaczego nie można grać w golfa?)
tylko ASCII
1
-2 bajty: b>>4nie potrzebuje parens, pamiętaj, że bitowe mają bardzo, bardzo niski priorytet
tylko ASCII
7

Siatkówka , 465 463 425 bajtów


1ic¶|\i/|¶||4\9|9/4b5\7/|\7/5b5/\dcekdce/\5b1cem6|6hdc1bd5/\'j':'j'/\5ebgd1/'mc1_|_1ch'ge1/b1|2/.3/g'k'1/\3.\2|1bfdhg_|_1h\efb/1'/.2/d1//k\ge\2.\'1\bc/c_/c_/_\(+)/_\c_\c_\cbm3\3g/(O)g/3/3hbg.\'me1\\_:_//1dh'/.1/bfe\2h|m2/dfb1|m'3l_._:_._l3'h|1b/1e1\3/4|4\3/1d1\be_3'l.j.:.j.l'3_db3d2/1c3|3c1\2e3b5le2dke2dl5b5/7\|/7\5bcc/a|a\cc||¶|/i\|
m
2\
l
\/
k
1:1
j
---
i
aaac
h
/2
g
\1
f
1|2|1
e
.'
d
'.
c
__
b
||¶||
a
_________
\d
$* 

Wypróbuj online!

ovs
źródło
7

C # (.NET Core) , 935 676 636 627 bajtów

_=>{var m=new char[782];int i=0,p,t=0;string r=@"a`_agb^_cD|nbJ gJ cn7bocgbock7#0l3a80l3#k6l3fbG gG 20lah0k#dpdmdpd#k3h:0acdfblajgjal2d:3ac61ceic:585#iebf461402:jgja2b3a14hcadcefc0aC/a8C\a3bfeb5bhlcqcqcjbB(B+B)cjbqbqblhf$$:cB(BOB):cici2h:ebdfb3aC\jmjC/a02dceac6143bf21bfc0a1461bdi%jejmjej%id24hca3a$cngn$ca0abh3jid%epemepe%dij0hi0fcaligilabf3i7%3f0a83f0%k7cobgcobkhE_cJ_gJ_bE_D|c^_bg",g=@"cb#bi$bc%de0gf1cf2ed3ga4da5ha6hk7ma8fd9ba:B aB\bB/cB'dB.eC fB|gE|hD iB_jF kC_lB:mE nH oD-pD_q";for(;i<93;i+=3)r=r.Replace(""+g[i+2],""+g[i]+g[i+1]);for(i=0;i<796;i+=2)for(p=0;p++<r[i]-65;){m[t++]=r[i+1];if(t%34==33)m[t++]='\n';}return m;}

Wypróbuj online!

Chciałem wypróbować inne podejście i RLE przeprowadziłem rysunek. Skończyło się na tym, że kod miał więcej bajtów niż sam rysunek (782 bajty). Następnie skompresowałem łańcuch RLE, tworząc słownik z najczęściej używanymi grupami, a po skompresowaniu utworzyłem więcej słowników i ponownie skompresowałem, aż łańcuch nie będzie już mógł zostać zmniejszony. W ten sposób rysunek jest tworzony najpierw poprzez rozwinięcie tych grup, a następnie rozpakowanie za pomocą RLE.

Charlie
źródło
Dobra odpowiedź +1, ale widzę jeden mały błąd z dolną częścią pająka. Przestrzenie wydają się znajdować po niewłaściwej stronie nóg (jeśli porównasz wyjście TIO z wyzwaniem-ascii).
Kevin Cruijssen
@KevinCruijssen Całkowicie popsułem rysunek, gdy skopiowałem go do VS, mam nadzieję, że został naprawiony (i zapisałem 2 bajty z nowym kodowaniem).
Charlie,
7

Python 2.7, 414 405 401 bajtów

import zlib
print zlib.decompress('fY9BauhADEP3OcXbueUz1j6X6AUEuogP/xeTpCmUGgxK5iFZ5O85xn++a44ZAHPPPEoAcxMPovEbeBFyddLFyRbyi0i6Hpd5HKqTTVTfLmutOmutdTt0zRwzphoVOCETEkGZLrRTBtSATHFSyEAbhocYqgUmEwTu2r9njhlRalA1Eic2XYZ24ZljJlHu9ce/T8XJvTsFc68+vj6Ndl0EV5d27Wg7Z6R9VKlfXWZHC7alql+XMuACrHTOdCyg9OrSha9ohusoUX116QpQVq+1+uy1VlsFpPrqQjWI5PJIMHRxdQHA6oJqTraw4Aexv8HzqG8iSZR75lFOkpljvh9/G89/'.decode('base64'),-9)

Po prostu dekompresuje ciąg i drukuje go. :)

Daffy
źródło
1
Może się trochę golić, usuwając nowe wiersze dodanego enkodera base64 (ale nie wymaga dekompresji) i używając niestandardowej kompresji (wbits = -9, Z_FILTERED), która pozwala uniknąć nagłówków i sum kontrolnych. Krople do 401 bajtów.
ShadowRanger
Zmieniono linię:print zlib.decompress('fY9BauhADEP3OcXbueUz1j6X6AUEuogP/xeTpCmUGgxK5iFZ5O85xn++a44ZAHPPPEoAcxMPovEbeBFyddLFyRbyi0i6Hpd5HKqTTVTfLmutOmutdTt0zRwzphoVOCETEkGZLrRTBtSATHFSyEAbhocYqgUmEwTu2r9njhlRalA1Eic2XYZ24ZljJlHu9ce/T8XJvTsFc68+vj6Ndl0EV5d27Wg7Z6R9VKlfXWZHC7alql+XMuACrHTOdCyg9OrSha9ohusoUX116QpQVq+1+uy1VlsFpPrqQjWI5PJIMHRxdQHA6oJqTraw4Aexv8HzqG8iSZR75lFOkpljvh9/G89/'.decode('base64'),-9)
ShadowRanger
@ShadowRanger Nie jestem pewien, jak to zrobić. Wszystko, co próbowałem, pokazujecompress[obj]() takes no keyword arguments
Daffy
compressnie, ale compressobjprzyjmuje dodatkowe argumenty (choć nie jako słowa kluczowe przed 3.3, musisz przekazać argumenty pozycyjnie). Utworzenie kompresora, wywołanie compressor.compress(thedata), a następnie wykonanie compresseddata = compressor.flush()jest w trzech krokach równoważne zlib.compress, ale można skonfigurować compressobjbardziej precyzyjnie. Jedynym minusem jest to, że za pomocą wbits=-9środków należy przekazać -9do decompress(więc nie wie szukać nagłówka lub sumy kontrolnej).
ShadowRanger
@ShadowRanger Mam go i zredagowałem, dziękuję za podpowiedź!
Daffy
7

Python 3 , 404 398 bajtów

import zlib,base64
print(zlib.decompress(base64.b85decode('eUD3yLoo;h_c;YSCmI>{zC<p7#6>v#bmLDv(kMuN!q4SuEb+Y_>0i$+ADM!3*_EfW+HT??mVN^lVcs-Cn+%za`9;*pw&XF8oJ7-Y>Akm6-(}ENgo75N1$QE`f(FMq#;O#EP0J!Rhm=8`k%vfljI+?e2KVz2CXEVXmcillJ0(rL2*k!-{``62i+-({QV*TWp6{14X0P=Y`YPHzMj)z&VzynARx~e_jzi_2w@@N(p>Sw8Bbr@rp?^gam$iduzC~N`iktS{b=235(rCKgLK=4>mIDneN@x?Dfj>YFnN7`d6LSwTPxm1LWw9$y=d}g#IsC6Ye*p'),-9).decode())

Wypróbuj online!

Taki sam kod jak w wersji Python 2.7 , po prostu dostosowany do Py3 wymagał konwersji bytes<-> str. Wciąż mniejszy niż kod 2.7 pomimo dodatkowych importów i wymaganego dekodowania dzięki Pythonowi 3, zapewniającemu kodowanie base85 jako wbudowane, zmniejszając rozmiar wymagany do reprezentacji skompresowanych danych w formacie drukowanym ASCII o 28 bajtów.

Edycja: Ogolono jeszcze sześć bajtów poprzez ponowną kompresję, wbits=-9aby dane nie były nakładane na nagłówek ani sumę kontrolną (w zamian za konieczność dodawania ,-9argumentu zlib.decompress).

ShadowRanger
źródło
Witamy na stronie! :)
DJMcMayhem
6

Java 8, 719 bajtów

u->{String a="______________";return r(" _"+a,"_")+r("||    x         ","|")+r("||     x       /","|")+r("||     /x'.__.' ",":")+r("|| __.'  x      ","|")+r("||'.     /x'---'",":")+r("||x '. /'  x__ _","|")+r("|| |  /.   /x ' ", ":")+r("|| |  | './  x _","|")+r("||/ '/.  /'. // ","|")+r("||__/___/___/_x","(+)")+r("||  x   x   x /","(O)")+r("||x .x'  x.' xx_",":")+r("|| |  | .'x  /  ","|")+r("|| |  x'   x/_._",":")+r("||/ .' x   /    ","|")+r("||.'_   'x/.---.",":")+r("||   '.  / __   ","|")+r("||     x/.'  '. ",":")+r("||     /       x","|")+r("||____/_________",":")+r("|/"+a,"_");}String r(String a,String b){return a.replace("x","\\")+b+(new StringBuffer(a).reverse()+"\n").replace("/","\\").replace("x","/");}

Z pewnością można grać w golfa, ale to dopiero początek i coś, co inni golfiści Java mogą (spróbować) pokonać. ;)

Wyjaśnienie:

Wypróbuj tutaj.

u->{                          // Method (1) with unused Object parameter and String return-type
  String a="______________";  //  Temp String we use multiple times
  return r(" _"+a,"_")+r("||    x         ","|")+r("||     x       /","|")+r("||     /x'.__.' ",":")+r("|| __.'  x      ","|")+r("||'.     /x'---'",":")+r("||x '. /'  x__ _","|")+r("|| |  /.   /x ' ", ":")+r("|| |  | './  x _","|")+r("||/ '/.  /'. // ","|")+r("||__/___/___/_x","(+)")+r("||  x   x   x /","(O)")+r("||x .x'  x.' xx_",":")+r("|| |  | .'x  /  ","|")+r("|| |  x'   x/_._",":")+r("||/ .' x   /    ","|")+r("||.'_   'x/.---.",":")+r("||   '.  / __   ","|")+r("||     x/.'  '. ",":")+r("||     /       x","|")+r("||____/_________",":")+r("|/"+a,"_");
                              //  Return the result
}                             // End of method (1)

String r(String a,String b){  // Method (2) with two String parameters and String return-type
  return a.replace("x","\\")  //  Return the first halve of the row
         +b                   //   + the middle character(s)
         +(new StringBuffer(a).reverse()+"\n").replace("/","\\").replace("x","/");
                              //   + the reversed first halve
}                             //  End of method (2)
Kevin Cruijssen
źródło
3
„[...] golfiści Java mogą ( próbować ) pokonać [...]”. To wygląda na wyzwanie, proszę pana! Wyzwanie przyjęte i wykonane, proszę pana! Nie ma za co, proszę pana!
Olivier Grégoire,
2
Okej, postanowiłem dać +1 za próbę i pomysł użycia symetrii. ;)
Olivier Grégoire,
5

pieprzenie mózgu , 5173 bajtów

++++[->++++++++<]>.[->+++<]>-...............................>++++++++++.>--[-->+++<]>-.[---->+++<]>-.+++.............................-[-->+<]>.>--[-->+++<]>-.>++++++++++.>--[-->+++<]>-..[---->+<]>+....-[->+++<]>-.+[--->+<]>+.........-[->++++<]>.[---->+<]>+.........[-->+++<]>-.+[--->++<]>....-[->++++<]>..>++++++++++.>--[-->+++<]>-..[---->+<]>+.....-[->+++<]>-.+[--->+<]>+.......[-->+++<]>-.>--[-->+++<]>-.[---->+++<]>-.+[--->+<]>+.......[-->+++<]>-.+[--->++<]>.....-[->++++<]>..>++++++++++.>--[-->+++<]>-..[---->+<]>+.....[-->+++<]>-.-[->++<]>.[->++++++<]>-.+++++++.+[->++<]>+..-[-->+<]>-.-------.-------.---[->++<]>.[-->+<]>+++.+++++++.+++++++.+[->++<]>+..-[-->+<]>-.-------.++++++++.-[->++<]>.+[--->+<]>+.....-[->++++<]>..>++++++++++.>--[-->+++<]>-..[---->+<]>+.[->+++<]>-..-[-->+<]>-.-------.-------..-[->+++<]>-.+[--->+<]>+......-[->++++<]>.[---->+<]>+......[-->+++<]>-.+[--->++<]>..+++++++.+++++++.+[->++<]>+..+[->+++<]>.-[->++++<]>..>++++++++++.>--[-->+++<]>-..-[--->+<]>--.+++++++.++[--->++<]>.....[-->+++<]>-.-[->++<]>.[->++++++<]>-.++++++...------.-[-->+++<]>+.-[--->++<]>+.++++++...------.++++++++.-[->++<]>.+[--->+<]>+.....[-->+++<]>--.-------.++[->+++<]>+..>++++++++++.>--[-->+++<]>-..[---->+++<]>-.+[--->+<]>+.+++++++.+++++++.++[--->++<]>.[-->+++<]>-.--------.-------..-[->+++<]>-.+++..+[->+++<]>.[->+++<]>-.[->++++<]>.[---->+++<]>++.+[->+++<]>.[->+++<]>-..-[-->+<]>.+[--->++<]>..+++++++.+[------>+<]>.+[--->+<]>+.[-->+++<]>--.-------.-------.[-->+++<]>-.>--[-->+++<]>-..>++++++++++.>--[-->+++<]>-..[---->+<]>+.-[->++++<]>.[---->+<]>+..[-->+++<]>-.-.++[--->++<]>...[-->+++<]>-.-[->++<]>.+[--->+<]>+.+++++++.-------.---[->++<]>.[-->+<]>+++.+++++++.-------.[-->+++<]>-.-[->++<]>.+[--->+<]>+...[-->+++<]>--.[->++<]>.+[--->+<]>+..-[->++++<]>.[---->+<]>+.-[->++++<]>..>++++++++++.>--[-->+++<]>-..[---->+<]>+.-[->++++<]>.[---->+<]>+..-[->++++<]>.[---->+<]>+.+++++++.+++++++.+.+[--->++<]>..-[->+++<]>-.+[--->+<]>+.[->+++<]>-.[->++++<]>.[---->+++<]>++.+[->+++<]>.[-->+++<]>-.+[--->++<]>..-[->+++<]>-.[-->+<]>.-------.-------.-[->++++<]>.[---->+<]>+..-[->++++<]>.[---->+<]>+.-[->++++<]>..>++++++++++.>--[-->+++<]>-..[----->++++<]>-.+[--->++<]>.+++++++.++++++++.-.++[--->++<]>..[-->+++<]>-.--------.+++++++.++[--->++<]>.[-->+++<]>-..+[--->++<]>.---[->++<]>.[-->+<]>+++.-[->+++<]>-..+[--->+<]>+.[-->+++<]>--.-------.+[------>+<]>.+[--->+<]>+..[-->+++<]>--.[->++<]>.[->++++++<]>-.-------.-[->+++<]>-.+[--->++++<]>..>++++++++++.>--[-->+++<]>-..[---->+++<]>++..-[-->+<]>.[->++<]>+...-[-->+<]>.[->++<]>+...-[-->+<]>.[->++<]>+.---.[->++++++<]>.+++.--.++++++.[->++<]>+.---.+++...---.+++...---.+++..[->++++<]>..>++++++++++.>--[-->+++<]>-..[---->+<]>+..-[->+++<]>-.+[--->+<]>+...-[->+++<]>-.+[--->+<]>+...-[->+++<]>-.+[--->+<]>+.[-->+++<]>-.-------.[->++<]>-.+[-->+<]>+.-[------>+<]>.+[--->+<]>+.[-->+++<]>-.+[--->++<]>...[-->+++<]>-.+[--->++<]>...[-->+++<]>-.+[--->++<]>..-[->++++<]>..>++++++++++.>--[-->+++<]>-..[---->+++<]>-.+[--->+<]>+.[-->+++<]>--.[->++<]>.[->++++++<]>-.-------..-[->+++<]>-.[-->+<]>.-------.-------.-[->+++<]>-..+++.[->++++++<]>.[------>+<]>.-[-->+<]>..+[--->++<]>.+++++++.+++++++.+.+[--->++<]>..+++++++.++++++++.-.++[--->++<]>.[-->+++<]>-.>--[-->+++<]>-..>++++++++++.>--[-->+++<]>-..[---->+<]>+.-[->++++<]>.[---->+<]>+..-[->++++<]>.[---->+<]>+.[-->+++<]>--.-------.+[------>+<]>.+[--->+<]>+..[-->+++<]>-.+[--->++<]>..-[->++++<]>.[---->+<]>+..-[->+++<]>-.+[--->+<]>+..[-->+++<]>-.--------.+++++++.++[--->++<]>.-[->++++<]>.[---->+<]>+..-[->++++<]>.[---->+<]>+.-[->++++<]>..>++++++++++.>--[-->+++<]>-..[---->+<]>+.-[->++++<]>.[---->+<]>+..-[->+++<]>-.[->++++++<]>-.-------...-[->+++<]>-.[-->+<]>+.[->++<]>+.-[-->+<]>-.+[->++<]>+.[->++++++<]>.[------>+<]>.-[-->+<]>-.+[->++<]>+.---.[-->+<]>+.+[--->++<]>...+++++++.++++++++.+[--->++<]>..-[->++++<]>.[---->+<]>+.-[->++++<]>..>++++++++++.>--[-->+++<]>-..[----->++++<]>-.+[--->++<]>.[-->+++<]>--.-------.-------.-[->+++<]>-.+[--->+<]>+...[-->+++<]>-.+[--->++<]>....-[->++++<]>.[---->+<]>+....-[->+++<]>-.+[--->+<]>+...[-->+++<]>-.+[--->++<]>.+++++++.+++++++.++[--->++<]>.-[->+++<]>-.+[--->++++<]>..>++++++++++.>--[-->+++<]>-..-[--->+<]>+++++.-------.-[-->+++++<]>.+[->+++<]>...+++++++.+[------>+<]>.[-->+<]>+.-.-...+.++++++++++++.------------.-...+.[->++<]>.[-->+<]>+.--------.-------...[->+++<]>-.[----->++<]>+.+++++++.>--[-->+++<]>-..>++++++++++.>--[-->+++<]>-..[---->+<]>+...+++++++.+++++++.++[--->++<]>..[-->+++<]>-.+[--->++<]>.[->+++<]>-..+[->+++<]>...-[->++++<]>.[---->+<]>+...[->+++<]>-..+[->+++<]>.-[->+++<]>-.+[--->+<]>+..[-->+++<]>--.-------.-------...-[->++++<]>..>++++++++++.>--[-->+++<]>-..[---->+<]>+.....-[->+++<]>-.[-->+<]>+.-.-------.-------..+++++++.+++++++.++[--->++<]>.---[->++<]>.[-->+<]>+++.[-->+++<]>--.-------.-------..+++++++.+++++++.[->++<]>.[-->+<]>+.+[--->++<]>.....-[->++++<]>..>++++++++++.>--[-->+++<]>-..[---->+<]>+.....[-->+++<]>-.+[--->++<]>.......-[->+++<]>-.+[--->++++<]>.[----->++++<]>-.+[--->++<]>.......-[->+++<]>-.+[--->+<]>+.....-[->++++<]>..>++++++++++.>--[-->+++<]>-..[---->+++<]>++....-[-->+<]>.[->++<]>+.........[->++++<]>.[---->+++<]>++.........---.+++....[->++++<]>..>++++++++++.>--[-->+++<]>-.[----->++++<]>-.[->++<]>+.............................---.+[--->++++<]>.

Wypróbuj online!

Jak to działa

W skrócie: znajduje indeks ascii każdego znaku w linii; następnie drukuje. Następnie znajdź indeks ascii dla nowego wiersza i wydrukuj go. Opłucz i powtórz mojego syna.

The first line (all underscores, so relatively easy):
++++[->++++++++<]>.[->+++<]>-...............................

New line:
>++++++++++.

Second line:
>--[-->+++<]>-..[---->+<]>+....-[->+++<]>-.+[--->+<]>+.........-[->++++<]>.[---->+<]>+.........[-->+++<]>-.+[--->++<]>....-[->++++<]>..

New line:
>++++++++++.
.
.
.
and so on...
Grawiton
źródło
5

256 bajtów, kod maszynowy (16-bit x86)

Miałem nadzieję, że uda mi się pokonać przynajmniej węgiel drzewny, ale nie udało mi się wycisnąć z tego więcej (do tej pory).

00000000: e8 7d 00 00 01 03 02 05 04 07 04 08 09 0a 0b 0c  .}..............
00000010: 08 0a 0a 10 28 29 5c 2f 27 2e 2b 4f 20 3a 5f 7c  ....()\/'.+O :_|
00000020: 2d 5f 5f 20 0a fd fd 1b 12 fe de 3b 7f 12 ff 1f  -__ .......;....
00000030: 5b a2 e3 5b a3 12 14 15 3d 15 14 29 3b 2d 1d 15  [..[....=..);-..
00000040: 14 42 2f 1f 6b 3b 14 15 1f 83 12 14 5c 14 19 3b  .B/.k;......\..;
00000050: 12 24 15 23 62 3d 2d 5b 2b 43 15 63 12 1f 14 1f  .$.#b=-[+C.c....
00000060: 19 3b 2b 4b 24 15 13 42 2d 5b 13 24 13 15 43 14  .;+K$..B-[.$..C.
00000070: 15 23 13 1f 19 3b 3d 13 5d 13 5d 13 1d 12 10 16  .#...;=.].].....
00000080: be 25 01 bf 00 03 57 57 b1 cc b0 08 f2 aa 5f 47  .%....WW......_G
00000090: ac d4 10 d0 ec 73 06 10 e1 f2 aa eb 05 10 e1 f2  .....s..........
000000a0: ae aa 81 fe 80 01 75 e8 ba 0c 00 5e bf 00 04 5b  ......u....^...[
000000b0: 57 b1 11 f3 a4 4e 4e b1 10 fd ac 3c 03 77 02 34  W....NN....<.w.4
000000c0: 01 fc aa e2 f4 83 c6 12 b0 10 aa 4a 75 e3 b2 0c  ...........Ju...
000000d0: be 76 05 b1 22 ac d7 aa e2 fb 83 ee 44 4a 75 f3  .v..".......DJu.
000000e0: 83 c3 11 b0 04 bf f6 04 aa 83 c7 0f aa bf 4a 06  ..............J.
000000f0: aa 83 c7 0f aa b9 0e 03 5e 89 f7 ac d7 aa e2 fb  ........^.......

Uruchamianie: zapisz na codegolf.com, dosbox, aby zobaczyć wynik, w którym musisz ustawić punkt przerwania na cs:200i ds:400zrzuć pamięć na legth 30e... lub możesz dołączyć kolejny kawałek, który zrzuci go na standardowe wyjście

00000100: 31 db b9 0e 03 ba 00 04 b4 40 cd 21 cd 20        1........@.!.

To mój trzeci wpis do golfa. Poprzednim było szyfrowanie Xor .

Znowu: zrobione przy użyciu hekseditora HT , bez kompilatora , ale przy użyciu Ctrl-a assemble instruction.

udana próba

W jaki sposób

Ten zajął trochę czasu, aby ...

Zacząłem od prostego podejścia, z jedną ćwiartką i próby jej odzwierciedlenia. Dało to ~ 250 bajtów i posiadało tylko 2 z 4 ćwiartek. Duża część tego to sam pierwszy kwadrant, który zajął 204 bajty.

Wiedziałem, że może być lepiej.

Szybko sprawdziłem, czy lz4 tworzy plik ze 144 bajtami (pomijanie nagłówków). GZ daje ~ 120 bajtów, ale najwyraźniej nie byłbym w stanie stworzyć dekompresora za około 30 bajtów.

Kolejną próbą było ręczne wykonanie pierwszego kwadrantu poprzez narysowanie go (w tym pominięcie, kodowanie 4-bitowe i tym podobne). To razem z kodem zaowocowało 164 bajtami (myślę, że to tylko pierwsza ćwiartka), fajnie, ale byłem całkiem przekonany, że mogę zrobić lepiej.

Wymyśliłem kodowanie, które kończy się na 85 bajtach danych. Wraz z tablicą translacji (która nie jest jeszcze używana) i dekoderem otrzymałem 144 bajty. UWAGA, jestem = lz4 i już mam dekoder.

Kolejnym krokiem było połączenie początkowej kopii lustrzanej z ~ 250 prób do tej, wymagało to strojenia danych, ale poszło łatwiej niż oczekiwano i przyniosło 184 bajty.

Zdałem sobie sprawę, że będę potrzebował dodatkowych markerów, aby zrobić lustro poziome, które rozszerzyło dane do 91b i kod do 190 bajtów (które później trafiły do ​​kosza).

Wraz z poziomym lustrem i końcowym tłumaczeniem skończyłem z ~ 250 bajtami.

Udało mi się zjeść kilka bajtów tu i tam, ale musiałem dodać te brzydkie znaki, które są niepoprawnie dublowane. To dało 259 bajtów ... To źle, ponieważ korzystałem z pamięci zaczynającej się od 0x200 i nie chciałem tego powtarzać.

Zamieniłem warunki w lustrze poziomym, aby zapętlić się przy użyciu tabeli translacji, która sama w sobie nie oszczędzała wiele, ale w połączeniu ze zmianą niepoprawnych znaków na spacje i naprawieniem ich później, zaoszczędziłem kilka bajtów, w wyniku czego otrzymano 256 bajtów.

Można zobaczyć piękny galerii, które zrobiłem, robiąc to tutaj

Sekcja

Podobnie jak poprzednie wpisy, ten również opiera się na wartościach początkowych , choć nie tak bardzo jak poprzednie:

:0100 E8 7D 00                    call    0x180

pomiń dane, dostępne są 3 tabele:

:0103  db 00h,01h,03h,02h,05h,04h,07h,04h,08h,09h,0Ah,0Bh,0Ch,08h,0Ah,0Ah,10h

Tabela translacji będzie używana do tworzenia kopii lustrzanych w poziomie

:0114  db "()\/'.+O :_|-__ \n"

Tabela końcowa zostanie wykorzystana do ostatecznego podstawienia, do konwersji kodów na rzeczywiste ascii

:0125  db FDh,FDh,1Bh,12h,FEh,DEh,3Bh,7Fh,12h,FFh...

Zakodowane dane, kodowanie jest dość proste:

  • nib nibble to kod znaku
  • wysoka skórka:
    • jeśli najniższy bit to 1, interpretuj pozostałe 3 bity jako „powtórz” (+ dodatkowy 1) kodu o niskim skrypcie
    • w przeciwnym razie interpretuj jako liczbę bajtów do pominięcia, a następnie umieść kod o niskiej wartości
:0180 BE 25 01            mov     si, 125h
:0183 BF 00 03            mov     di, 300h
:0186 57                  push    di
:0187 57                  push    di
:0188 B1 CC               mov     cl, 0CCh
:018A B0 08               mov     al, 8
:018C F2 AA               repne stosb

wypełnij 12 * 17 bajtów tym, co stanie się spacją (8)

:018E 5F                  pop     di
:018F 47                  inc     di
:0190
:0190 AC                  lodsb
:0191 D4 10               aam     10h
:0193 D0 EC               shr     ah, 1
:0195 73 06               jnb     short 0x19D
:0197 10 E1               adc     cl, ah
:0199 F2 AA               repne stosb
:019B EB 05               jmp     short 0x1A2
:019D
:019D 10 E1               adc     cl, ah
:019F F2 AE               repne scasb
:01A1 AA                  stosb
:01A2
:01A2 81 FE 80 01         cmp     si, 180h
:01A6 75 E8               jnz     short 0x190

„Zdekompresuj” dane zgodnie z opisem w tabeli 3. Pamiętaj o użyciu ukochanej instrukcji AAM i nadużywaniu scasb do pomijania bajtów.

:01A8 BA 0C 00            mov     dx, 0Ch
:01AB 5E                  pop     si
:01AC BF 00 04            mov     di, 400h
:01AF 5B                  pop     bx
:01B0 57                  push    di
:01B1
:01B1 B1 11               mov     cl, 11h          <--
:01B3 F3 A4               rep movsb                  |
:01B5 4E                  dec     si                 |
:01B6 4E                  dec     si                 |
:01B7 B1 10               mov     cl, 10h            |
:01B9                                                |
:01B9 FD                  std                   <--  |
:01BA AC                  lodsb                   |  |
:01BB 3C 03               cmp     al, 3           |  |
:01BD 77 02               ja      short 0x1C1 --  |  |
:01BF 34 01               xor     al, 1        |  |  |
:01C1                                          |  |  |
:01C1 FC                  cld                <--  |  |
:01C2 AA                  stosb                   |  |
:01C3 E2 F4               loop    0x1B9          --  |
:01C5 83 C6 12            add     si, 12h            |
:01C8 B0 10               mov     al, 10h            |
:01CA AA                  stosb                      |
:01CB 4A                  dec     dx                 |
:01CC 75 E3               jnz     short 0x1B1       --

Ta część jest dość brzydka, ustawia miejsce docelowe na 0x400:

  • kopiuje wiersz
  • odzwierciedla wiersz
  • dodaje „nowy wiersz” (10h w 0x1C8)

Pamiętaj, że tworzenie lustra odbywa się poprzez nadużywanie standardowego standardu / cld, aby przejść SIw drugą stronę. Tylko \/()znaki muszą być dublowane, co jest wykonywane przez xor w 0x1BF.

:01CE B2 0C               mov     dl, 0Ch
:01D0 BE 76 05            mov     si, 576h
:01D3
:01D3 B1 22               mov     cl, 22h    <--
:01D5                                          |
:01D5 AC                  lodsb        <--     |
:01D6 D7                  xlat           |     |
:01D7 AA                  stosb          |     |
:01D8 E2 FB               loop    0x1D5 --     |
:01DA                                          |
:01DA 83 EE 44            sub     si, 44h      |
:01DD 4A                  dec     dx           |
:01DE 75 F3               jnz     short 0x1D3 --
:01E0 83 C3 11            add     bx, 11h         (adjust bx for final xlat below)

To robi lustro poziome, używając tabeli 1 i używając wspaniałego 1-bajtowego XLAT

Potem pojawia się nudna część, która naprawia 4 „piksele”. Pominę ją, bo jest nudna

:01F5 B9 0E 03            mov     cx, 30Eh
:01F8 5E                  pop     si
:01F9 89 F7               mov     di, si
:01FB
:01FB AC                  lodsb
:01FC D7                  xlat
:01FD AA                  stosb
:01FE E2 FB               loop    0x1FB

Ostatni krok tłumaczenia na ascii.

PHEW! To było zabawne.

GiM
źródło
3

JavaScript (ES6), 517 ... 459 457 456 433 431 418 409 397 392 bajtów

Zawiera końcową linię spacji oraz końcową spację w pierwszym wierszu. Niektóre z nich wciąż nie są optymalnie dostosowane do gry w golfa - poświęcam dużo czasu na to, aby wszystko działało.

o.innerText=(

_=>[(g=n=>` b8b8
|af8f7
zj4aj9|
z 5a 7k|
z 5kacibbic :
z bbic  a jj 3|
zcij 3dkac-3c:
za ci kh  abb b|
z |  ki 3kajcj:
z |  | cik  a b|
zk cki  kci kkj:
zbbkb3kb3kba(e`[r="replace"](/.\d/g,([x,y])=>x.repeat(y))[r](/\w/g,x=>`\\_' +_O'. /`[[i=parseInt(x,21)-10,10-i][n]]||`||`))(0),...g(1).split`
`.reverse()].join`
`[r](/.*/g,x=>x+x[r](/./g,_=>(z=x[--y])?`)\\/`[`(/\\`.indexOf(z)]||z:``,y=16))

)()
body{align-items:center;background:#222;color:#ddd;display:flex;font-size:14px;height:100vh;justify-content:center;}
<pre id=o>

Pierwotnie oparty na rozwiązaniu traktor53 od czasu porzucenia 556 bajtów . Wysłano za zgodą .


Lista rzeczy do zrobienia

  1. Znajdź tańszy sposób na palindromizację łańcuchów.
  2. Spróbuj poprawić wymianę RLE.
  3. Sprawdź, czy ostatnie 4 zamienniki można w jakikolwiek sposób zagrać w golfa.
  4. Sprawdź, czy budowanie wizerunku w kwartałach przyniosłoby znaczne oszczędności - podejrzewam, że nie!
  5. Dodaj zaktualizowane wyjaśnienie.
Kudłaty
źródło
Zastanawialiście się, czy kompresja kwadrantu mogłaby przynieść wartościowe korzyści ... W moim przypadku zadziałało, ale szersze zastosowanie jest niepewne.
traktor53
@ Traktor53: Bardzo ładnie zrobione :) Ten element zaginął z mojej listy rzeczy do zrobienia w edycji, mając nadzieję, że będę miał trochę czasu, aby przyjrzeć się mu jutro.
Kudłaty
Jestem pod wrażeniem. BTW, string1[string2.indexOf( char) ]|| char to konstrukcja, którą wypróbowałem, ale nie udało mi się zmniejszyć bajtów. Dobra robota!
traktor53
3

JavaScript 556 468 462 448 438 387 379 bajtów

let f =

_=>(t="",y=(s,X,L,R)=>{x=M=>{c=s.charCodeAt(i);for(r=c>>4;--r;)t+=(":_| -"+X+M)[c&15]};for(i=0;s[i];i++)x(L);for(--i;i--;)x(R);t+=`
`},`#qqA!
",qq1!
2U,uE"
2c,s#-"
2c-,)*6*)# 
2#6*)3,#5C"
2)*%C(-,)D) 
2,#)*#-'3,6#&"
2#"3-*C-,%)% 
2#"3"#)*-3,#&"
2-#)-*3-)*#=% 
26-F-F-&,.+`.split(`
`).map(s=>y(s," _' '.+","\\/(","/\\)")||s).map((_,i,a)=>i&&y(a[12-i],"_  '.'O","/\\(","\\/)")),t)

o.innerHTML = f()
<pre id="o"></pre>

Mniej golfa

_=>(
  t="",
  y=(s,X,L,R)=>{
     x=M=>{
         c=s.charCodeAt(i);
         for(r=c>>4;--r;)
             t+= ( ":_| -" + X + M )[c&15]
     };
     for(i=0;s[i];i++)
         x(L);
     for(--i;i--;)
         x(R);t+=`
`},
   stringLiteral //  of compressed strings separated by '\n'
   .split(`
`) .map(s=>y(s," _' '.+","\\/(","/\\)")||s)
   .map((_,i,a)=>i&&y(a[12-i],"_  '.'O","/\\(","\\/)"))
   ,t
)

Kompresja

Oryginalny post (556 bajtów) używał cyfr dziesiętnych, aby wskazać powtórzenie poprzedniego znaku w sieci pająka. Nowsze wersje kompresują lewą połowę sieci do 7-bitowych znaków, przy czym najmniej znaczącym skubkiem jest indeks do zestawu znaków, a trzy bity wyższego rzędu określają liczbę znaków do wyświetlenia plus wartości 1: 000i 001nie są używane, co 010oznacza 1 znak i 111oznacza sześć. Ta konstrukcja pozwala uniknąć tworzenia znaków kontrolnych.

Dzięki @Shaggy za porady i wskazówki przydatne podczas przepisywania.

Jak to działa

Lewa górna ćwiartka została przepisana, aby zawierała symbole zastępcze dla górnej i dolnej połowy sieci:

  • „s” do zamiany przestrzeni z podkreśleniem,
  • „u”, aby zamienić podkreślenie spacją,
  • „q”, aby zamienić cytat ze spacją, oraz
  • „h”, aby zamienić miejsce z (ukrytym) cytatem

dający:

 ________________
|\_______________
||ssss\sssssssss|
||     \       /|
||     /\'.uu.' :
|| uu.'  \ ss   |
||'.s   h/\'---':
||\ '. /q  \uu u|
|| |  /.   /\s's:
|| |  | './  \ u|
||/ '/.  /'. //s:
||uu/uuu/uuu/u\(+

który został skompresowany przy użyciu

charset ::=  ":_| -suqh'.+\/("

Dekompresja

Dekompresja odwzorowuje zakodowane znaki na rzeczywiste znaki dla każdej ćwiartki. W kodzie,

  • Xto indeksowana lista znaków, która zmienia się pomiędzy górną i dolną sekcją strony. Dostarcza wartości dla symboli zastępczych „suqh” i trudnych odbić znaków, takich jak między „+” a „O”.
  • „L” i „R” to listy znaków, które zapewniają odbicia znaków między lewą i prawą połową sieci.

Kodowanie

Kodowanie znaku środkowego jest ograniczone do użycia rozszerzenia pojedynczego znaku. Kolejność zestawów znaków jest ograniczona, aby podczas kompresji nie generować znaków DEL (0x7F), Grave (0x60) ani odwrotnego ukośnika (0x5C).


Jest to późna aktualizacja w odpowiedzi na aktywność dotyczącą pytania.

traktor53
źródło
Oto wersja 517 bajtów (uwaga: wystarczy policzyć bajty samej funkcji). Napisałem to bardzo szybko podczas przerwy na dym, więc prawdopodobnie można go jeszcze pograć w golfa, ale powinien dać ci początek. Daj mi znać, jeśli masz jakieś pytania.
Kudłaty
@ Shaggy dzięki za wskazówki i porady. Zapewniam cię, że będę studiował twój długopis, aby zobaczyć, jak pracujesz .reducei .mapczego nie mogłem. W międzyczasie zmieniłem algorytm, aby uzyskać 468 bajtów! Szczęśliwy weekend.
traktor53
Wszystkie te miesiące później wziąłem kolejną przepustkę do twojego oryginalnego rozwiązania, golfując go do 460 bajtów (jak dotąd). Nie masz nic przeciwko, jeśli opublikuję to teraz, gdy wybrałeś inną metodę?
Shaggy
Wcale nie @Shaggy, napisz naprzód :-) Z niecierpliwością czekam na wynik.
traktor53
Wielkie dzięki. Wysłano .
Shaggy
2

/// , 463 bajtów

/=/---//</ : //;/"""0//9/% //8/|!//7/\/\///6/%!75/&!74/ 8| 73/.'72/'.71/!,70/__7,/! 7&/\\\7/%/\\\&/#/||
||7"/0000_7!/  / ;0
|%;&|
|8!6!18!15!#161&|61&1#1&%203<203&%1# 03!6!!8!!520 #21&%'=':'='&%13#92 &'!%0 _|_ 05'93 &# 8&.,&9'<' &%,.6| #4259_|_ 5%34#& '&.!&2 &&<%936.%' %#0&0_&0_&_%(+)&_%0_%0_%0#!%,%,9&(O)9&,&,5#9.%'!%3 %%_:_&& 25'&. &#436586&24# 8%',%&_._:_._%&,'5| #& 3 %,5!8!%,& 2 %#3_,'%&.=.:.=.%&',_2#,2!& 0,|,0 63,#1%&3!2<3!2%&1#151%|51%1#00&"|"%00||
|&;%|

Wypróbuj online!

Conor O'Brien
źródło
2

Bash, 391 bajtów

base64 -d<<<H4sIAPPWTlkAA32SS47EMAhE9zkFO7o1CuxziblASVyEww+FP53WSLGEReLyK4wt8TyOxOO655EpNSBr5M68P5diSzxxF9wUDrUIU7lkJI6bolcWJTeByqFQW5TzPPXqeRJMW4FSi5NSeyIrggTUepXVLgV2a4p0HdIEAy23IovjrIUMJrU/t8JFiXB6eTFAPghRQSvKNlbg9fOuufIZsx+QFf76faObNWOehby2BuKKsuqi6O23Stvau2MYReXXWQgReFgxLEAL9dtZyN+Xue6RXvMspsEtcKt+29Uz2GMJtXW3vBqvbk9GJeyHfr8P549SXjIS/Hsf890gd/ZRxOzoGLmzfsBUeDwN5PEH4O6M4A0DAAA=|gunzip

Wypróbuj online!

Uznanie dla wszystkich, którzy byli w stanie pokonać kompresję poza stołem - to ja rzucam ręcznikiem! Doceniam ludzi Pythona, którzy jako pierwsi przyjęli podejście zlib / gzip.

Antony
źródło
2

Perl 5 439 402 bajtów

Zamiast używać base64 / gzip, podejście to polega na odbiciu lustrzanym i odwróceniu lewego górnego kwadrantu, z odpowiednimi podstawieniami

use 5.010;map{s^t^___^g;s!p!||!g;s%s%  %g;y&b&\\&;my@b=split//;@c=reverse@b[0..15];map{y;\\/(;/\\);;push@b,$_}@c;unshift@a,\@b;say@b}(split/n/," ttttt_n|btttttnpssbssss |npss bsss /|npss /b'.__.' :np __.'sbsss|np'.ss /b'---':npb '. /'sb__ _|np |s/.s /b ' :np |s| './sb _|np/ '/.s/'. // :np__/t/t/_b(+");for$j(0..10){for$i(0..34){$_=$a[$j][$i];y:\\/.'+_:/\\'.O :;s/ /_/ if$a[$j+1][$i]=~s/_/ /;print}say}

Wypróbuj online

Dla zainteresowanych skomentowana wersja:

# use 5.010 is shorter for the says
use 5.010;

map{
# sed replace keys in long string
s^t^___^g;
s!p!||!g;
s%s%  %g;
y&b&\\&;

my@b=split//;
# don't mirror the middle
@c=reverse@b[0..15];

map{
# transliterate the right mirror
y;\\/(;/\\);;
# add to end of current line
push@b,$_
}@c;

# build bottom array
unshift@a,\@b;
#print completed line
say@b

}(split/n/,
# this string is the top left quadrant.
" ttttt_n|btttttnpssbssss |npss bsss /|npss /b'.__.' :np __.'sbsss|np'.ss /b'---':npb '. /'sb__ _|np |s/.s /b ' :np |s| './sb _|np/ '/.s/'. // :np__/t/t/_b(+");

# handle _ changes and print
for$j(0..10){
for$i(0..34){
$_=$a[$j][$i];
# transliterate the bottom chars
y:\\/.'+_:/\\'.O :;
# handle _ adjustments
s/ /_/ if$a[$j+1][$i]=~s/_/ /;
print
}
say
}
whofferbert
źródło
1

C #, 484 bajty

Uwaga: Nie jestem w 100% pewien, jak je zdobyć. Z nagłówkiem i stopką jest to 544 bajty.

var w=@" uuuuu_n|\uuuuun||ww\wwww |n||ww \www /|n||ww /\'.__.' :n|| __.'w\www|n||'.ww /\'---':n||\ '. /'w\__ _|n|| |w/.w /\ ' :n|| |w| './w\ _|n||/ '/.w/'. // :n||__/u/u/_\(+".Replace("u", "___").Replace("w", "  ").Split('n');for(int i=0;i<23;i++){var s=w[i<12?i:23-i].Skip(0);if(i>11)s=s.Select((x,j)=>x=='_'||x==' '?w[22-i][j]=='_'?'_':' ':(x+"\\/o.'")["/\\+'.".IndexOf(x)+1]);Console.WriteLine(s.Concat(s.Reverse().Select(x=>(x+"\\/()")["/\\)(".IndexOf(x)+1]).Skip(1)).ToArray());}

Nie golfowany:

var w = @" uuuuu_n|\uuuuun||ww\wwww |n||ww \www /|n||ww /\'.__.' :n|| __.'w\www|n||'.ww /\'---':n||\ '. /'w\__ _|n|| |w/.w /\ ' :n|| |w| './w\ _|n||/ '/.w/'. // :n||__/u/u/_\(+".Replace("u", "___").Replace("w", "  ").Split('n');
for (int i = 0; i < 23; i++)
{
    // mirror the web vertically and convert the strings to IEnumerable
    var s = w[i < 12 ? i : 23 - i].Skip(0);
    if (i > 11)
    {
        // shift _ characters up a row, then flip all the mirrored characters (also replace + with o)
        s = s.Select((x, j) => x == '_' || x == ' ' ? w[22 - i][j] == '_' ? '_' : ' ' : (x + "\\/o.'")["/\\+'.".IndexOf(x) + 1]);
    }
    // mirror each string horizontally and flip the mirrored characters
    Console.WriteLine(s.Concat(s.Reverse().Select(x => (x + "\\/()")["/\\)(".IndexOf(x) + 1]).Skip(1)).ToArray());
}

Wypróbuj online!

Geoffrey
źródło
1

Ruby 1.9.3, 1102 763 bajty

a=" 9_9_9_4_\n|\\9_9_9_2_/|\n2|4 \\9 |9 /4 2|\n2|5 \\7 /|\\7 /5 2|\n2|5 /\\'.2_.' : '.2_.'/\\5 2|\n2| 2_.'2 \\6 |6 /2 '.2_ 2|\n2|'.5 /\\'3-':'3-'/\\5 .'2|\n2|\\ '. /'2 \\2_ _|_ 2_/2 '\\ .' /2|\n2| |2 /.3 /\\ ' : ' /\\3 .\\2 | 2|\n2| |2 | './2 \\ _|_ /2 \\.' |2 | 2|\n2|/ '/.2 /'. 2/ : 2\\ .'\\2 .\\' \\2|\n2|2_/3_/3_/_\\(+)/_\\3_\\3_\\2_2|\n2|2 \\3 \\3 \\ /(O)\\ /3 /3 /2 2|\n2|\\ .\\'2 \\.' 2\\_:_2/ './2 '/. /2|\n2| |2 | .'\\2 /2 |2 \\2 /'. |2 | 2|\n2| |2 \\'3 \\/_._:_._\\/3 '/2 | 2|\n2|/ .' \\3 /4 |4 \\3 / '. \\2|\n2|.'_3 '\\/.3-.:.3-.\\/'3 _'.2|\n2|3 '.2 / 2_3 |3 2_ \\2 .'3 2|\n2|5 \\/.'2 '. : .'2 '.\\/5 2|\n2|5 /7 \\|/7 \\5 2|\n2|4_/9_|9_\\4_2|\n|/9_9_9_2_\\|\n"
.split '';r='';loop{e=a.shift;break unless e;e.to_i==0 ? r<<e : r<<a.shift*e.to_i};puts r

Wypróbuj online!

Zuba
źródło
5
Biorąc pod uwagę, że rzeczywiste dane do wydrukowania to tylko 780 bajtów, użycie prostego skryptu putsi ciągu wielowierszowego powinno zająć ~ 790 bajtów. Twój ogromny ciąg do zeskanowania i kod do przetworzenia okazują się dłuższe niż naiwne rozwiązanie ...
ShadowRanger
1
1022 bajtów: Wypróbuj online!
Conor O'Brien
680 bajtów
Cyoce
1

C #, 401 399 397 396 389 bajtów

Napisałem to jako pretekst do wypróbowania kodowania Huffmana

BigInteger v=0;foreach(var c in @"!P~`]~~R'vZWB';uq4w_HVe,OinAa6=/[ k5)HMJCPVyy)ZtdpW<P*-KAp=b`(p|jvUoBs/d!S4pqmw@ >|b3e;?\o<Hw2Ndi2B+|r}]B'*qHwXv%Zt :Hj[@,^/^/Kq^ep:A!2<GjH5i8yo]thre{B=U:""^DTzb`-xA")v=95*v+c-32;String t=@"wtb/\nb::heb++OO)(--..__heb''\/||  ",s="";for(int p=0;v>0;v/=2)if(t[p+=v%2>0?t[p]-95:1]/24!=4&&(s=(s!=""?t[p+1]+s:s)+t[p]).Length>32+(p=0))Console.WriteLine(s,s="");

Nie golfowany:

BigInteger v = 0;
foreach (var c in @"!P~`]~~R'vZWB';uq4w_HVe,OinAa6=/[ k5)HMJCPVyy)ZtdpW<P*-KAp=b`(p|jvUoBs/d!S4pqmw@ >|b3e;?\o<Hw2Ndi2B+|r}]B'*qHwXv%Zt :Hj[@,^/^/Kq^ep:A!2<GjH5i8yo]thre{B=U:""^DTzb`-xA")
    v = 95 * v + c - 32;
String t = @"wtb/\nb::heb++OO)(--..__heb''\/||  ", s = "";

for (int p = 0; v > 0; v /= 2)
    if (t[p += v % 2 > 0 ? t[p] - 95 : 1] / 24 != 4
        && (s = (s != "" ? t[p + 1] + s : s) + t[p]).Length > 32 + (p = 0))
        Console.WriteLine(s, s = "");

Starsza wersja bez komentarza:

BigInteger v = 0;
// the data here is an encoded version of the right half of the web
foreach (var c in @"!P~`]~~R'vZWB';uq4w_HVe,OinAa6=/[ k5)HMJCPVyy)ZtdpW<P*-KAp=b`(p|jvUoBs/d!S4pqmw@ >|b3e;?\o<Hw2Ndi2B+|r}]B'*qHwXv%Zt :Hj[@,^/^/Kq^ep:A!2<GjH5i8yo]thre{B=U:""^DTzb`-xA")
    v = 95 * v + c - 32; // converts from base-95, I'm using every single-byte printable character in UTF-8
// our binary decision tree for our Huffman coding
// a loweralpha character asks for a bit
//      on zero you increase your pointer by 1
//      on 1 you increase your pointer by an amount equal to the loweralpha character
// every other character is a character that gets printed, followed by its mirrored counterpart
String t = @"wtb/\nb::heb++OO)(--..__heb''\/||  ", s = "";
for (int p = 0, l = 0; v > 0; v /= 2)
{
    p += v % 2 > 0 ? t[p] - 95 : 1; // begin reading one bit at a time and going through the decision tree
    if (t[p] / 24 != 4) // "good enough" for determining if the character is a loweralpha or not
    {
        s = (l++ > 0 ? t[p + 1] + s : s) + t[p]; // add the character and its mirror to both sides of the string, unless we're just starting
        if (l > 16) { Console.WriteLine(s); s = ""; l = 0; } // once the string is long enough, print it
        p = 0;
    }
}

Wypróbuj online!

Geoffrey
źródło
Niezła odpowiedź! +1. Możesz while(v>0){forv/=2for(int p=0,l=0;v>0;v/=2){
zagrać w
@KevinCruijssen To wspaniale, dzięki! Wydaje mi się, że teraz rzadko whilebędzie zajmować to samo miejsce for.
Geoffrey,
Cóż, tylko w tych przypadkach, w których nie masz żadnych zmiennych i tylko jedno ciało liniowe, mają one tę samą długość. Czyli tych trzech wszystkim zrobić to samo i wszyscy trzej mają taką samą długość: for(;someCondition;someAction);vs for(;someCondition;)someAction;vs while(someCondition)someAction;. Ale ogólnie rzecz biorąc, forjest rzeczywiście krótszy niż while, więc używam prawie zawsze forsam.
Kevin Cruijssen
1

Python 2 , 395 bajtów

print'eNp9kk2uwzAIhPc9BTtaPQX2uUQvMBIX4fCPwT9NVSmWbJF4/A3GSNyPR+J23/ORKTUga+SOvD+XYks8cRVcFA61CFM5ZQSOi6J3FiU3gcqhUFuU4zj07HUSTFuBUouTUmciawYJqP1Kq10K7NYU6TykCQZabkUWx5kLGQzqfG6FixLh9PJigHwQooJWlG2sieffq9aK55z1gKzpz/cLXaw5513Ia2sgziirTorefsm0rb0rhpFUft2FEIGHFcMCtFC/3IX8/ZjrHek172IaPAK3qredvYI1llBbb8un8ar2ZFTAeuh3fzh/lPKUEeCnP2bfIHf0UcSs6Bi5o25gKvy2k5H/H7zBvA=='.decode('base64').decode('zlib')

Wypróbuj online!

mdahmoune
źródło
1

Biała spacja , 4723 4584 bajtów

S S S T T   T   T   S N
S S T   T   S N
S S S T N
S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S S T T   S T T   T   T   N
S S S T T   T   T   S N
S S T   T   S T S T S S N
S T S S T   N
S N
S S S S T   N
S N
S S N
S S N
S S S T T   S N
S S S T N
S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S S S T   T   T   T   S N
S S S T N
S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S S T T   S T T   T   T   N
S S S T N
S N
S S N
S S N
S S S S T   T   T   T   S N
S N
S S S T T   S T S T S S N
S T S S T   N
S N
S S S T T   T   T   T   T   S N
S N
S S N
S S N
S S N
S S S T T   S N
S T S S T   N
S N
S S N
S S N
S S N
S S N
S S N
S S S T T   S T T   T   T   N
S S S T T   T   T   S N
S S T   T   S N
S T S S T   T   N
S N
S S N
S S N
S S N
S S N
S S N
S S S T T   S T T   T   T   N
S T S S T   N
S N
S S N
S S N
S S N
S S S S T   T   T   T   S N
S N
S S S T T   S T S T S S N
S T S S T   N
S N
S S S T T   T   T   T   T   S N
S N
S S N
S S N
S S N
S S S T T   S T T   T   T   N
S S T   T   S N
S S T   T   T   S S S S N
S S T   T   T   S T T   T   N
S S T   T   T   T   T   T   S N
S N
S S T   S S T   S N
S S T   T   T   S S S S N
S T S S T   S N
S S T   T   S S T   S S N
S T S S T   N
S S T   T   T   S S S S N
S S T   T   T   S T T   T   N
S T S S T   S N
S N
S S T   S S T   S N
S S T   T   T   S S S S N
S S T   T   S T T   T   T   N
S S T   T   S N
S T S S T   S S N
S N
S S N
S S N
S S N
S S S S T   T   T   T   S N
S N
S S S T T   S T S T S S N
S T S S T   N
S N
S S S T T   T   T   T   T   S N
S N
S S N
S S S T T   T   S T T   T   N
S S T   T   T   S S S S N
S T S S T   S N
S N
S S S T T   S N
S T S S T   N
S S S T N
S N
S S T   S S T   S N
S N
S S N
S S S S T   T   T   T   S N
S T S S T   N
S N
S S N
S S S S T   N
S N
S S T   S S T   S N
S S T   T   S T T   T   T   N
S T S S T   N
S N
S S S T T   T   S S S S N
S S T   T   T   S T T   T   N
S T S S T   S N
S N
S S N
S S S S T   T   T   T   S N
S N
S S S T T   S T S T S S N
S T S S T   N
S N
S S S T T   T   S S S S N
S S T   T   T   S T T   T   N
S S S T N
S S T   T   T   T   T   T   S N
S N
S S N
S S S T T   T   S T T   T   N
S S T   T   S T T   T   T   N
S S T   T   S N
S S T   T   T   S S S S N
S S T   T   T   S S S T N
S N
S S N
S S S T T   T   S S S S N
S S T   T   S S T   S S N
S T S S T   N
S S T   T   T   S S S T N
S N
S S N
S S T   S S T   T   N
S S T   T   S T T   T   T   N
S S T   T   S N
S S T   T   T   S T T   T   N
S S T   T   T   T   T   T   S N
S N
S S N
S S S S T   N
S S T   T   T   S T T   T   N
S S T   T   T   S S S S N
S S S T T   T   T   S N
S N
S S S T T   S T S T S S N
S T S S T   N
S N
S S S T T   S N
S S T   T   T   T   T   T   S N
S S T   T   T   S S S S N
S S T   T   T   S T T   T   N
S T S S T   S N
S S T   T   S T T   T   T   N
S T S S T   N
S N
S S N
S S S T T   S N
S T S S T   N
S N
S S N
S S N
S S S S T   T   T   T   S N
S T S S T   N
S N
S S N
S S N
S S S T T   S T T   T   T   N
S T S S T   N
S N
S S N
S S S T T   S N
S T S S T   N
S S T   T   T   S T T   T   N
S S T   T   T   S S S S N
S T S S T   S N
S S T   T   S T T   T   T   N
S S S T T   T   T   S N
S N
S S S T T   S T S T S S N
S T S S T   S N
S N
S S S T T   T   T   T   T   S N
S T S S T   N
S T S S T   N
S N
S S S T T   S T T   T   T   N
S S T   T   T   S T T   T   N
S T S S T   S N
S N
S S N
S S S T T   S T T   T   T   N
S S T   T   S N
S S S T N
S S T   T   T   S S S S N
S S S T N
S S T   T   S S T   S S N
S S S T N
S T S S T   T   N
S S S T N
S S T   T   S T T   T   T   N
S S T   T   S N
S S T   T   T   T   T   T   S N
S N
S S N
S S S T T   T   S T T   T   N
S S T   T   S N
S T S S T   S N
S N
S S S S T   T   T   T   S N
S T S S T   S N
S T S S T   N
S N
S S S T T   S T S T S S N
S T S S T   S N
S N
S S S T T   T   T   T   T   S N
S T S S T   N
S T S S T   N
S N
S S T   S S T   S N
S T S S T   N
S S T   T   T   S S S S N
S S T   T   T   S T T   T   N
S S T   T   S T T   T   T   N
S T S S T   T   N
S N
S S S T T   S N
S T S S T   N
S N
S S S S T   T   T   T   S N
S T S S T   N
S N
S S S T T   S T T   T   T   N
S T S S T   S N
S N
S S S T T   S N
S S T   T   T   S T T   T   N
S S T   T   T   S S S S N
S T S S T   T   N
S S S T T   T   T   S N
S T S S T   N
S N
S S T   S S T   S N
S T S S T   N
S S S T T   T   T   S N
S N
S S S T T   S T S T S S N
S T S S T   N
S N
S S S T T   S T T   T   T   N
S S T   T   T   T   T   T   S N
S S T   T   T   S S S S N
S T S S T   S N
S S T   T   T   S T T   T   N
S T S S T   T   N
S N
S S S T T   S T T   T   T   N
S S T   T   T   S S S S N
S S T   T   T   S T T   T   N
S T S S T   T   N
S S T   T   S T T   T   T   N
S N
S S S S T   N
S S T   T   S S T   S S N
S S S T N
S S T   T   S N
S N
S S S T T   T   T   T   T   S N
S S T   T   T   S T T   T   N
S S T   T   T   S S S S N
S S T   T   S N
S T S S T   T   N
S N
S S S T T   T   S T T   T   N
S S T   T   S N
S S T   T   T   S S S S N
S T S S T   T   N
S S T   T   S N
S S S T T   T   T   S N
S N
S S S T T   S T S T S S N
S T S S T   N
S N
S S S T T   T   T   T   T   S N
S N
S S S T T   S T T   T   T   N
S T S S T   N
S N
S S N
S S T   S S T   T   N
S T S S T   N
S N
S S N
S S T   S S T   T   N
S T S S T   N
S S T   T   S N
S S T   T   T   S T S T N
S S T   T   T   T   T   N
S S T   T   T   S T T   S N
S S T   T   S T T   T   T   N
S S T   T   T   T   T   T   S N
S S T   T   S N
S T S S T   N
S N
S S N
S S S T T   S N
S T S S T   N
S N
S S N
S S S T T   S N
S T S S T   N
S N
S S S S T   T   T   T   S N
S N
S S S T T   S T S T S S N
S T S S T   S N
S N
S S S S T   N
S N
S S S T T   S N
S S S T N
S N
S S N
S S S T T   S N
S S S T N
S N
S S N
S S S T T   S N
S S S T N
S S T   T   S T T   T   T   N
S S T   T   T   S T S T N
S S T   T   T   S S T   T   N
S S T   T   T   S T T   S N
S S T   T   S N
S S S T N
S S T   T   S T T   T   T   N
S S S T N
S N
S S N
S S T   S S T   T   N
S S S T N
S N
S S N
S S T   S S T   T   N
S S S T N
S N
S S S S T   T   T   T   S N
S N
S S S T T   S T S T S S N
S T S S T   S N
S N
S S S T T   S N
S S T   T   T   T   T   T   S N
S S T   T   T   S T T   T   N
S S T   T   S N
S S T   T   T   S S S S N
S T S S T   T   N
S N
S S S T T   S N
S S T   T   T   S T T   T   N
S S T   T   T   S S S S N
S T S S T   T   N
S S T   T   S N
S N
S S T   S S T   S N
S S T   T   S S T   S S N
S T S S T   N
S S T   T   S T T   T   T   N
S N
S S T   S S T   S N
S S T   T   T   S S S S N
S S T   T   T   S T T   T   N
S T S S T   T   N
S T S S T   T   N
S N
S S S T T   T   S S S S N
S T S S T   T   N
S S T   T   T   S T T   T   N
S S T   T   T   T   T   T   S N
S T S S T   S N
S S S T T   T   T   S N
S N
S S S T T   S T S T S S N
S T S S T   N
S N
S S S T T   T   T   T   T   S N
S T S S T   N
S T S S T   N
S N
S S T   S S T   S N
S T S S T   N
S S T   T   T   S T T   T   N
S S T   T   T   S S S S N
S S T   T   S N
S T S S T   T   N
S N
S S S T T   S T T   T   T   N
S T S S T   N
S S S T N
S S S T T   T   T   S N
S S S T N
S T S S T   T   N
S S T   T   S N
S T S S T   N
S N
S S S T T   S T T   T   T   N
S S T   T   T   S S S S N
S S T   T   T   S T T   T   N
S T S S T   T   N
S S S T T   T   T   S N
S T S S T   N
S N
S S T   S S T   S N
S T S S T   N
S T S S T   N
S N
S S S T T   S T S T S S N
S T S S T   S N
S N
S S S T T   T   T   T   T   S N
S T S S T   N
S T S S T   N
S N
S S S T T   S N
S S T   T   T   S S S S N
S T S S T   S N
S N
S S N
S S S T T   S N
S S T   T   S T T   T   T   N
S T S S T   S N
S S T   T   T   S T T   T   N
S T S S T   N
S S T   T   S S T   S S N
S T S S T   N
S T S S T   T   N
S T S S T   N
S S T   T   S N
S S T   T   S T T   T   T   N
S T S S T   S N
S N
S S N
S S S T T   T   S S S S N
S S T   T   S T T   T   T   N
S T S S T   S N
S N
S S S S T   T   T   T   S N
S T S S T   N
S T S S T   N
S N
S S S T T   S T S T S S N
S T S S T   N
S N
S S S T T   S T T   T   T   N
S S T   T   T   T   T   T   S N
S S T   T   T   S T T   T   N
S S T   T   T   S S S S N
S T S S T   S N
S S T   T   S N
S T S S T   T   N
S T S S T   S N
S N
S S S T T   S T T   T   T   N
S S S T N
S N
S S S T T   T   T   T   T   S N
S S S T N
S S S T T   T   T   S N
S S S T N
S T S S T   T   N
S S S T N
S N
S S S T T   S N
S S T   T   T   T   T   T   S N
S N
S S S T T   T   S T T   T   N
S S T   T   S T T   T   T   N
S T S S T   T   N
S S T   T   T   S S S S N
S S T   T   T   S T T   T   N
S T S S T   S N
S S T   T   S N
S S S T T   T   T   S N
S N
S S S T T   S T S T S S N
S T S S T   N
S N
S S S T T   T   S T T   T   N
S S T   T   T   S S S S N
S S T   T   T   T   T   T   S N
S N
S S N
S S N
S S N
S S S T T   S N
S S T   T   S T T   T   T   N
S S T   T   T   S T T   T   N
S S T   T   T   S S S T N
S N
S S N
S S T   S S T   T   N
S S T   T   S S T   S S N
S T S S T   N
S S T   T   T   S S S T N
S N
S S N
S S T   S S T   T   N
S S T   T   S N
S S T   T   S T T   T   T   N
S S T   T   T   T   T   T   S N
S N
S S N
S S N
S S N
S S S T T   T   S S S S N
S S T   T   T   S T T   T   N
S S S T T   T   T   S N
S N
S S S T T   S T S T S S N
S T S S T   N
S N
S S S T T   T   T   T   T   S N
S S S T N
S N
S S S T T   T   S S S S N
S S T   T   T   S T T   T   N
S S T   T   T   T   T   T   S N
S N
S S S T T   S T T   T   T   N
S T S S T   N
S N
S S N
S S N
S S N
S S N
S S S S T   T   T   T   S N
S T S S T   N
S N
S S N
S S N
S S N
S S N
S S S T T   S N
S T S S T   N
S N
S S S T T   T   S T T   T   N
S S T   T   T   S S S S N
S S S T N
S N
S S S T T   T   T   T   T   S N
S S S T T   T   T   S N
S N
S S S T T   S T S T S S N
S T S S T   N
S N
S S S T T   T   T   T   T   S N
S N
S S N
S S N
S S N
S S S T T   S N
S S T   T   S T T   T   T   N
S S T   T   T   S T T   T   N
S S T   T   T   S S S S N
S S S T N
S N
S S T   S S T   S N
S S T   T   T   S T T   T   N
S S T   T   T   T   T   T   S N
S S T   T   S S T   S S N
S T S S T   N
S S T   T   T   S T T   T   N
S S T   T   T   S S S S N
S S S T N
S N
S S T   S S T   S N
S S T   T   T   S T T   T   N
S S T   T   S N
S S T   T   S T T   T   T   N
S S T   T   T   T   T   T   S N
S N
S S N
S S N
S S N
S S S S T   T   T   T   S N
S N
S S S T T   S T S T S S N
S T S S T   N
S N
S S S T T   T   T   T   T   S N
S N
S S N
S S N
S S N
S S S T T   S T T   T   T   N
S T S S T   N
S N
S S N
S S N
S S N
S S N
S S N
S S S T T   S N
S S S T T   T   T   S N
S S T   T   S T T   T   T   N
S T S S T   T   N
S N
S S N
S S N
S S N
S S N
S S N
S S S T T   S N
S T S S T   N
S N
S S N
S S N
S S N
S S S S T   T   T   T   S N
S N
S S S T T   S T S T S S N
S T S S T   N
S N
S S S T T   T   T   T   T   S N
S N
S S N
S S N
S S S T T   S T T   T   T   N
S T S S T   N
S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S S S T   T   T   T   S N
S T S S T   N
S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S S T T   S N
S T S S T   N
S N
S S N
S S N
S S S S T   T   T   T   S N
S N
S S S T T   S T S T S S N
S T S S T   N
S S T   T   S T T   T   T   N
S S S T N
S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S S T T   S N
S S S T T   T   T   S N
S S T   T   S T S T S S N
S S S T N
S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S N
S S S T T   T   T   T   T   S N
N
S S N
S S S T S T T   T   T   S N
T   S S S T N
S S N
S N
N

Litery S(spacja), T(tab) i N(nowa linia) dodane tylko jako wyróżnienia.

Wypróbuj online .

Wyjaśnienie:

Korzystam z podejścia wyjaśnionego w tym moim wskazówce na temat białych znaków . Opisane podejście jest następujące:

  • Najpierw pchnij wartości minus stała wartość dla każdego znaku, który chcemy wypisać na stos w odwrotnej kolejności
  • Następnie utwórz PĘTLA i wewnątrz tej pętli wykonujemy:
    • Pop bieżącą górę stosu
    • Dodaj stałą wartość do tej bieżącej wartości
    • Wydrukuj tę nową wartość jako znak na STDOUT
    • Przejdź do następnej iteracji pętli
  • To zakończy działanie z błędem, że potrzebuje dwóch wartości na stosie podczas korzystania z funkcji add po wypisaniu każdego znaku.

Idealna stała wartość to 94, którą wygenerowałem za pomocą tego programu Java . Użycie 94dałoby program Whitespace o łącznej długości 7508 bajtów (7481 + 27 bajtów dla pętli) lub 5791 bajtów (5764 + 27), jeśli zaimplementujemy już Duplicate Top ( SNS) wszędzie tam, gdzie sąsiadują dwa takie same znaki.

Następnie ręcznie użyłem Copy 1st ( STSSTN), Copy 2nd ( STSSTSN) i Copy 3rd ( STSSTTN) (1-indexed) wszędzie tam, gdzie zapisywałoby bajty. Które można również znaleźć w poradach białych znaków. Co w sumie spowodowało wyświetlenie programu 4584 bajtów .

Kevin Cruijssen
źródło
1

05AB1E , 204 bajty

" '(+-./:O\_|"•5ñǝ¶P
вUÅxSǝTѸ;ÕØ+F&нλ–?°тW¬¬0ZÂ*d’E9U<Tèñˆwãœ&ì‰0Kíš7ùθ²£PŸíн¥°8{²wëp¥‡Λ¿®gs0₂.ÙmòÓÛ‚ÄîÅß∍Ô!мH{gµJõa¦ñCÅ2’‡†ºÞ§Tx]š\å≠„”ak…²¥\‘ôVиHâθDëX₄à&*%ƒ²í3ߨÑ:r‹ÈOê.‡}¬ú[@ÊǝªZ˜f¬Î†Ÿ!1в•12вèR17ôJ».º

Wypróbuj online.
Sprawdź, czy jest poprawne.

Wyjaśnienie:

" '(+-./:O\_|"  # Push string " '(+-./:O\_|"
5ñǝ¶P
вUÅxSǝTѸ;ÕØ+F&нλ–?°тW¬¬0ZÂ*dE9U<Tèñˆwãœ&ì‰0Kíš7ùθ²£PŸíн¥°8wëp¥‡Λ¿®gs0₂.ÙmòÓÛ‚ÄîÅß∍Ô!мH{gµJõa¦ñCÅ2’‡†ºÞ§Tx≠„”ak…²¥\‘ôVиHâθDëX₄à&*%ƒ²í3ߨÑ:r‹ÈOê.‡}¬ú[@ÊǝªZ˜f¬Î†Ÿ!1в•
                # Push compressed integer 82884728546083544802114826866811347888294234139952249449993042546851026466586575621019053395214928564814179141524271139630560365410986413280485520009435856058156273218115974685512908452464400236161169136625844093046037549003472551358816347180245088496758636921040209372081258608689916152211637687400211864355841371146514354551178114229365000601858316896536398050410654536115253951187868762637231796211074036336817668524952
 12в            # Convert it to Base-12 as list: [10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,6,11,11,10,10,10,10,10,10,10,10,10,6,10,10,10,10,11,11,11,9,0,0,0,0,0,0,0,6,0,0,0,0,0,11,11,7,0,5,1,0,0,1,5,6,9,0,0,0,0,0,11,11,11,0,0,0,10,10,0,6,0,0,5,1,0,0,0,11,11,7,5,4,4,4,5,6,9,1,0,0,0,10,1,5,11,11,11,0,0,0,0,6,0,0,0,9,0,1,5,0,6,11,11,7,10,5,10,6,9,0,0,0,1,9,0,0,11,0,11,11,11,0,0,6,0,0,9,1,5,0,11,0,0,11,0,11,11,7,10,9,9,0,1,5,9,0,0,1,9,5,0,9,11,11,8,2,6,0,9,0,0,0,9,0,0,0,9,0,0,11,11,3,2,9,10,6,10,10,10,6,10,10,10,6,10,10,11,11,7,0,6,6,0,5,1,6,0,0,5,6,1,0,6,11,11,11,10,0,9,0,0,6,5,1,0,11,0,0,11,0,11,11,7,0,1,0,9,6,0,0,0,5,6,0,0,11,0,11,11,11,10,0,10,10,9,0,0,1,6,0,5,1,0,9,11,11,7,1,4,4,4,1,9,6,0,0,0,0,0,5,1,11,11,11,0,0,0,0,0,0,9,0,0,1,5,10,10,0,11,11,7,0,1,5,10,10,5,1,9,6,0,0,0,0,0,11,11,11,6,0,0,0,0,0,0,0,9,0,0,0,0,0,11,11,11,0,0,0,0,0,0,0,0,0,9,0,0,0,0,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0]
    è           # Index each into the string
     R          # Reverse the list of characters
      17ô       # Split it into chunks of size 17
         J      # Join each chunk of characters to a single string
          »     # Join the list of strings by newlines
              # Mirror it with overlap (and output implicitly)
Kevin Cruijssen
źródło