"Da bambino, mi è stato detto che Spiders non provava alcuna emozione."


65

La sfida: produrre questa esatta arte ASCII di una ragnatela in una finestra:

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

Fonte: Joan Stark (ragno e telaio leggermente modificati, e rimuovi le iniziali per il bene della sfida).

Caratteri richiesti: _|\/'.:-(+)O(12) + spazio e nuova riga (2)

Regole della sfida:

  • Sono ammessi uno o più spazi finali e / o nuove righe.

Regole generali:

  • Questo è , quindi vince la risposta più breve in byte.
    Non lasciare che le lingue di code-golf ti scoraggino dal pubblicare risposte con lingue non codegolfing. Prova a trovare una risposta il più breve possibile per "qualsiasi" linguaggio di programmazione.
  • Per la tua risposta valgono regole standard , quindi puoi usare STDIN / STDOUT, funzioni / metodo con i parametri corretti, programmi completi. La tua chiamata.
  • Sono vietate le scappatoie predefinite .
  • Se possibile, aggiungi un link con un test per il tuo codice.
  • Inoltre, si prega di aggiungere una spiegazione, se necessario.

25
Avrei dovuto salvare questo per Halloween.
steenbergh,

2
@steenbergh Hmm, hai davvero ragione! Ah bene, penserò a qualcosa di nuovo a quel punto. :)
Kevin Cruijssen il

3
Ci sono .7 caratteri prima del O. Dovrebbero esserci anche 7 caratteri dopo?
Neil,

7
Cosa stai citando nel titolo?
lazzaro,

21
@lazarusL Non proprio una citazione diretta, ma Widowmaker di Overwatch: " Quando ero una ragazza, avevo paura dei ragni. Mi è stato detto che non provavano emozione, che i loro cuori non battevano mai. Ma so la verità. Al momento. dell'uccisione, non sono mai più vivi. "( Cortometraggio animato:" Alive " )
Kevin Cruijssen,

Risposte:


29

SOGL V0.12 , 141 byte

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

Spiegazione:

...‘                             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]

Provalo qui! (il programma contiene schede, quindi ecco una migliore rappresentazione del programma)


28
"fa del suo meglio ma ha ancora dei bug" sicuramente avere dei bachi a portata di mano è utile quando si tenta di combattere un ragno
Orso

8
@Bear avere dei bug sulla finestra sarebbe utile ... a portata di mano, non tanto.
user253751

58

Arnold C, 1257 1261 1256 1233 byte

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

Questo è il mio primo tentativo di programmare in un linguaggio supremo, quindi mangerò i miei voti negativi poiché non offro una soluzione intelligente a questo problema, sebbene la programmazione in un linguaggio discenda dal cielo.

Ecco un compilatore se qualcuno per caso mette in dubbio questo algoritmo.

Restare in zona.


13
Ehi Arnold, hai un ragno in mano!
Olivier Grégoire,

9
Smetti di frignare! - Arnold
bearacuda13

13
Se più giocatori di golf avessero questo senso dell'umorismo, guarderei la partita più spesso.
can-ned_food,

3
Puoi golf un byte rimuovendo la linea vuota? Il compilatore ha smesso di lamentarsi quando l'ho fatto.
Olivier Grégoire,

15
54 voti positivi per una risposta che non tenta di giocare a golf? scuoti la testa Potresti salvare 23 byte semplicemente rimuovendo tutti gli spazi dopo TALK TO THE HAND!
Shaggy,

24

vim, 373 371 byte

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> è uno standin per 0x1B.

Ungolfed

" 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

Provalo online!

E per chiarire la spiegazione che ti è stata data da bambino: anche se è vero che i soli ragni emotivi provano personalmente l'odio, sono in grado di percepire la paura a una distanza di oltre 50 metri.


Non puoi base64 input di Vim? : D
YSC,

@YSC Temo che la versione codificata in base64 potrebbe essere meno leggibile. :-)
Ray

Capisco che devo premere <kbd> Invio </kbd> dove dice <CR>ma le linee che terminano con la <CR>media premono due volte il tasto? La risposta sembra essere no nei due casi precedenti, ma poi si allinea s/ /_/ge trnon finisce <CR>ma non riesco a farlo funzionare senza premere Invio.
antak,

@antak I doppi <CR>sono stati un errore e anche il feed di linea funziona. (Avevo inserito le righe usando <C-v><ENTER>, che genera <CR>; ecco perché si presenta come al ^Mposto di una nuova riga.) Ho modificato il codice per eliminare quei due duplicati e sostituire i ritorni a capo con normali newline / avanzamenti di riga. Tutte le nuove righe rimanenti devono essere inserite esattamente una volta. (La versione non golfata ha ancora alcune righe vuote in più; quelle non corrispondono ai tasti premuti effettivi. La versione golfata è esattamente ciò che deve essere digitato, tranne per la <ESC>s.)
Ray

1
@Jakob Se si inseriscono quei byte in un file e si reindirizza l'input su vim, il risultato sarà un buffer contenente il testo di destinazione. In pratica, questo sarà testato tramite in { cat foo.vim; echo ':wq'; } | vim a.txtmodo da non essere bloccato in vim senza tastiera collegata a stdin. Il vantaggio è che posso effettivamente eseguire il programma direttamente da un file invece di provare a scriverlo esattamente ogni volta che apporto una modifica. Per questo programma, byte e sequenze di tasti sono equivalenti, ma non è sempre così. es <C-v><ENTER>è tre tasti, ma produce un byte, \r.
Ray,

17

Gelatina ,  206  205 byte

“¢ṙ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

Un collegamento niladico che restituisce un elenco di caratteri o un programma completo che stampa l'arte.

Provalo online!

È possibile utilizzare la simmetria verticale approssimativa?

Come?

I primi 158 byte sono un numero molto grande scritto nella base biiettiva 250 usando i primi 250 byte della tabella codici di 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’

Questo numero (dell'ordine di 10 372 viene convertito in un elenco delle sue cifre in base-9 (391 numeri tra 0 e 8) e quindi tre viene aggiunto al 203 ° , 204 ° , 220 ° e 221 st cifre ( che sarà il corpo dei ragni):

“ ... ’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

Il risultato viene quindi convertito nei 12 caratteri del lato sinistro (fino alla colonna centrale inclusa) dell'arte:

... ị“ |\/'.:-(+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)

Le righe complete vengono quindi costruite facendo rimbalzare ogni riga laterale sinistra (che la riflette come se il suo ultimo carattere fosse uno specchio), modificando tutto il (to ), il \to /e il /a \, e quindi utilizzando solo i nuovi valori sulla destra di lato usando un vettore andcon il lato sinistro di prima. Il risultato è finalmente unito a nuove linee per creare l'arte:

... µŒ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

Non ho mai visto un codice Jelly così lungo. ; _; wew
RedClover,

11

Carbone , 239 238 byte

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

Provalo online! Il collegamento è alla versione dettagliata del codice. La maggior parte di questo è semplicemente stampare una stringa compressa di grandi dimensioni, ma le parti ripetitive sono state codificate separatamente per ridurre la lunghezza della stringa; in particolare Rectanglesalva un numero di byte evitando il riempimento dello spazio per raggiungere la 17a colonna e anche le linee diagonali salvano un byte ciascuna.

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)

Modifica: il carbone non sembra più riconoscere la stringa compressa e la sua compressione corrente genera una stringa più breve che consente di risparmiare 51 byte e consente di spostare una delle linee diagonali nella stringa per un ulteriore salvataggio di 2 byte. (Si noti che questi non sono i conteggi visualizzati da -sl; in effetti anche il conteggio originale sembra essere stato disattivato da 1.) Tuttavia ci sono tre ulteriori risparmi che sarebbero stati applicati anche al codice originale: Provalo online!

  • 1 byte utilizzando ( Box) anziché UR( Rectangle).
  • 1 byte usando ↙P×_¹⁶←/invece di ↓P×_¹⁵←_/.
  • 1 byte usando ×_¹⁶J⁵¦¹invece di P×_¹⁶M⁵¦².

10

PHP , 380 byte

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

Provalo online!

PHP , 494 byte

<?=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\|",["||
||",__,"   ",_________,"\\","  ","---",".'","'."]);

Provalo online!


9

Brainfuck , 4086 byte

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

Provalo online!

Questo è solo un metodo hunt-and-pick per generare la stringa.

Aggiunte nuove righe per una maggiore leggibilità:

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

1
Qualche motivo particolare per cui hai, ad esempio ---------------------------------------------------------------invece di qualcosa del genere >++++++++[-<-------->]<+?
Ray,

@Ray Ho cercato di utilizzare come piccole cellule possibile per minimizzare il numero di >s e <s sembrerebbe seguito nel codice. Non so quanti (se presenti) byte salva il mio approccio. Esaminerò l'utilizzo di più celle.
Conor O'Brien,

1
Puoi usare tutte le celle extra che vuoi durante la fase di inizializzazione senza influenzare le >>>sequenze in seguito, poiché sono usate solo come spazio temporaneo per le fattorizzazioni. In particolare, se si riempiono le celle da sinistra a destra, è possibile utilizzare, ad esempio la cella 5 come spazio temporaneo per l'impostazione della cella 4, e quindi (poiché la cella 5 viene azzerata nel processo di impostazione della cella 4), memorizzare una nuova valore nella cella 5 durante l'utilizzo della cella 6 come spazio temporaneo. Finché i valori finali delle celle rimangono invariati, puoi modificare qualsiasi cosa prima della prima .senza dover modificare il codice successivo.
Ray,

@Ray. Bene, lo esaminerò.
Conor O'Brien,

Dang, hai battuto il mio :)
Graviton il

8

JavaScript (ES6), 471 byte

Fornito con una variante ES6 di RegPack .

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>


8

Java (JDK) , 494 byte

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;}

Provalo online!

Grazie Kevin Cruijssen per aver giocato a golf pochi byte, più 6 byte cambiando Windows-1252in cp1252, e solo in ASCII per comprimere un po 'la stringa :)

Nota: il file deve essere codificato come Windows-1252 per il conteggio dei byte, ma può essere tranquillamente copiato / incollato in UTF-8 per il test!

La lunga catena è in realtà la stringa, così com'è, con i suoi caratteri mappati su un codificatore di caratteri flessibile (per una volta, sono felice di usare CP-1252). Il resto è solo il metodo di non mappatura.

La mappatura è stata trovata usando una permutazione, inizialmente inizializzata alla frequenza di ciascun carattere nell'arte ascii. Le mappature risultanti nei caratteri '"'e '\\'sono state esplicitamente scartate per essere la stringa valida più breve possibile.

Ungolfed

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;
};

Mappatura scoperta

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;
  }
}

1
Bella risposta +1! A proposito, puoi salvare un byte cambiando ()in un carattere casuale. Non ho mai detto nulla su nessun input, quindi puoi usare un inutilizzato Objectche è nullcome input. Meta-post pertinente. . Oh, e puoi salvare un altro byte cambiando bytein intnel ciclo for-each.
Kevin Cruijssen,

2
@Nathan No, non posso :( perché r+=a;equivale a r = r + (a)e con i caratteri, ciò significa che sono aggiunti l'uno all'altro prima di essere concatenati, quindi ora sono considerati come ints e la stringa risultante è simile a 127190190190190190190190190190.... Ho scritto un commento al riguardo nella versione ungolfed del codice;)
Olivier Grégoire,

1
So che è passato un po 'di tempo, ma Windows-1252può essere giocato a golf cp1252. Spiegazione qui.
Kevin Cruijssen,

1
perché non questo ????? (perché non si può giocare a golf con le stringhe ???)
ASCII il

1
-2 byte: b>>4non necessita di parentesi, ricorda che bit a bit ha una precedenza molto bassa
ASCII-only

7

Retina , 465 463 425 byte


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
$* 

Provalo online!


7

C # (.NET Core) , 935 676 636 627 byte

_=>{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;}

Provalo online!

Volevo provare un altro approccio e RLE ha fatto il disegno. Finì con un codice che aveva più byte del disegno stesso (782 byte). Quindi ho compresso la stringa RLE creando un dizionario con i gruppi più utilizzati e dopo averlo compresso ho creato più dizionari e ho compresso di nuovo fino a quando la stringa non poteva essere più ridotta. Il disegno viene quindi creato espandendo prima quei gruppi e quindi decomprimendo con RLE.


Bella risposta +1, ma vedo un piccolo errore con la parte inferiore del ragno. Gli spazi sembrano essere dalla parte sbagliata delle sue gambe (se si confronta l'output TIO con la sfida-ascii).
Kevin Cruijssen,

@KevinCruijssen Ho completamente incasinato il disegno quando l'ho copiato in VS, spero sia stato corretto ora (e salvato 2 byte con la nuova codifica).
Charlie,

7

Python 2.7, 414 405 401 byte

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

Decomprime semplicemente la stringa e la stampa. :)


1
Può radere un po 'di più rimuovendo le nuove righe aggiunte dall'encoder base64 (ma non è necessario per la decompressione) e utilizzando la compressione personalizzata (wbits = -9, Z_FILTERED) che evita intestazioni e checksum. Rilascialo a 401 byte.
ShadowRanger il

Linea modificata:print zlib.decompress('fY9BauhADEP3OcXbueUz1j6X6AUEuogP/xeTpCmUGgxK5iFZ5O85xn++a44ZAHPPPEoAcxMPovEbeBFyddLFyRbyi0i6Hpd5HKqTTVTfLmutOmutdTt0zRwzphoVOCETEkGZLrRTBtSATHFSyEAbhocYqgUmEwTu2r9njhlRalA1Eic2XYZ24ZljJlHu9ce/T8XJvTsFc68+vj6Ndl0EV5d27Wg7Z6R9VKlfXWZHC7alql+XMuACrHTOdCyg9OrSha9ohusoUX116QpQVq+1+uy1VlsFpPrqQjWI5PJIMHRxdQHA6oJqTraw4Aexv8HzqG8iSZR75lFOkpljvh9/G89/'.decode('base64'),-9)
ShadowRanger il

@ShadowRanger Non sono sicuro di come farlo. Tutto quello che ho provato sta mostrandocompress[obj]() takes no keyword arguments
Daffy il

compressnon lo fa, ma compressobjaccetta argomenti aggiuntivi (anche se non come parole chiave prima della 3.3, è necessario passare gli argomenti in posizione). Creare un compressore, chiamare compressor.compress(thedata), quindi fare compresseddata = compressor.flush()equivale a tre passaggi zlib.compress, ma è possibile configurare il compressobjpiù finemente. L'unico aspetto negativo è che l'utilizzo wbits=-9significa che devi passare -9a decompress(quindi sa di non cercare intestazione o checksum).
ShadowRanger il

@ShadowRanger Capito e modificato, grazie per il suggerimento!
Daffy,

7

Python 3 , 404 398 byte

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())

Provalo online!

Lo stesso trucco della versione Python 2.7 , appena modificato per Py3, richiedeva una conversione bytes<-> str. Ancora più piccolo del codice 2.7 nonostante le importazioni aggiuntive e la decodifica richiesta in virtù di Python 3 che fornisce la codifica base85 come integrata, riducendo le dimensioni richieste per rappresentare i dati compressi in formato stampabile ASCII di 28 byte.

Modifica: rasati altri sei byte ricomprimendoli in wbits=-9modo che nessuna intestazione o checksum venga inserita nei dati (in cambio della necessità di aggiungere ,-9arg zlib.decompress).


Benvenuti nel sito! :)
DJMcMayhem

6

Java 8, 719 byte

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","/");}

Può sicuramente essere giocato a golf, ma è solo un inizio e qualcosa che altri golfisti Java possono (provare a) battere. ;)

Spiegazione:

Provalo qui.

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)

3
"[...] i golfisti Java possono ( provare a ) battere [...]". Sembra una sfida, signore! Sfida accettata e fatta, signore! Prego, signore!
Olivier Grégoire,

2
Ok, ho deciso di dare +1 per il tentativo e l'idea di usare la simmetria. ;)
Olivier Grégoire,

5

Brainfuck , 5173 byte

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

Provalo online!

Come funziona

In poche parole: trova l'indice ASCII ogni carattere nella riga; quindi lo stampa. Quindi trova l'indice ascii per una nuova riga e lo stampa. Risciacqua e ripeti mio figlio.

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

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

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

New line:
>++++++++++.
.
.
.
and so on...

5

256 byte, codice macchina (16 bit x86)

Speravo di riuscire a battere almeno la soluzione di carbone, ma non sono riuscito a spremere di più da questo (finora).

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  ........^.......

In esecuzione: salva su codegolf.com, dosbox per vedere il risultato di cui hai bisogno per impostare il punto di interruzione cs:200e scaricare la memoria ds:400della legth 30e... oppure puoi aggiungere il seguente pezzo, che lo scaricherà su stdout

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

Questa è la mia terza voce di golf in codice. Uno precedente era la crittografia xor .

Ancora: fatto usando HT hexeditor , senza compilatore , ma usando Ctrl-a assemble instruction.

tentativo riuscito

Come

Questo ci è voluto un po ' per farlo ...

Ho iniziato con un approccio semplice, con un quadrante e cercando di rispecchiarlo. Ciò ha comportato ~ 250 byte e solo 2 quadranti su 4. Gran parte di quello era il primo quadrante stesso, che richiedeva 204 byte.

Sapevo che questo poteva essere migliore.

Ho rapidamente verificato che lz4 produce file con 144 byte (ignorando le intestazioni). GZ risulta in ~ 120 byte, ma chiaramente non sarei in grado di creare decompressori in circa 30 byte.

Quindi un altro tentativo è stato la creazione manuale del primo quadrante disegnandolo (incluso saltare, codifica a 4 bit e simili). Che insieme al codice ha prodotto 164 byte (attenzione, questo è solo il primo quadrante), ma ero abbastanza convinto di poter fare di meglio.

Ho trovato un po 'di codifica, che finisce in 85 byte per i dati. Insieme alla tabella di traduzione (che non è ancora stata utilizzata) e al decodificatore, sono arrivato a 144 byte. NOICE, sono = lz4 e ho già un decodificatore.

Il passo successivo è stato quello di unire il mirroring iniziale dal tentativo di ~ 250 a questo, questo ha richiesto un po 'di ottimizzazione dei dati, ma è andato più facile del previsto e ha prodotto 184 byte.

Mi sono reso conto che avrò bisogno di alcuni marcatori aggiuntivi per fare il mirroring orizzontale, che ha esteso i dati a 91b e il codice a 190bytes (che è andato nel cestino più tardi).

Insieme allo specchio orizzontale e alla traduzione finale ho finito con ~ 250 byte.

Sono riuscito a mangiare pochi byte qua e là, ma ho dovuto aggiungere quei brutti caratteri, che sono specchiati in modo errato. Ciò ha prodotto 259 byte ... È un male, perché stavo usando la memoria a partire da 0x200 e non volevo rifarlo.

Ho sostituito le condizioni in mirroring orizzontale, per eseguire il loop utilizzando la tabella di traduzione, che di per sé non ha risparmiato molto, ma combinato con la modifica dei caratteri offensivi agli spazi e la correzione in un secondo momento, salvato alcuni byte, con conseguente 256 byte finali .

Puoi vedere una bella galleria, che ho fatto, mentre lo faccio qui

Dissezione

Come voci precedenti, anche questa si basa su valori iniziali , sebbene non tanto quanto quelli precedenti:

:0100 E8 7D 00                    call    0x180

salta i dati, ci sono 3 tabelle seguenti:

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

La tabella di traduzione verrà utilizzata per il mirroring orizzontale

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

La tabella di traduzione verrà utilizzata per la sostituzione finale, per convertire i codici in ascii effettivi

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

Dati codificati, la codifica è piuttosto semplice:

  • il nibble basso è il codice carattere
  • bocconcino alto:
    • se il bit più basso è 1, interpretare altri 3 bit come 'ripeti' (+ 1 aggiuntivo) di codice basso
    • altrimenti interpretare come numero di byte da "saltare", quindi posizionare un codice di nibble basso
: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

riempire 12 * 17 byte con quello che diventerà spazio (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

"Decomprimi" i dati come descritto nella tabella 3. Considera l' uso dell'amata istruzione AAM e abusa di scasb per saltare i byte.

: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       --

Questa parte è piuttosto brutta, imposta la destinazione su 0x400:

  • riga copie
  • rispecchia una riga
  • aggiunge 'newline' (10h a 0x1C8)

Ricorda che il mirror viene fatto abusando di std / cld, per passare SIal contrario. Solo i \/()caratteri devono essere specchiati, fatto da xor a 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)

Questo fa il mirroring orizzontale usando la tabella 1 e usando la meravigliosa XLAT a 1 byte

Poi arriva la parte noiosa che ripara 4 "pixel", la salterò da qui è noiosa

: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

Fase finale della traduzione in ascii.

Accidenti! È stato divertente.


3

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

Include una riga finale di spazi più uno spazio finale sulla prima riga. Alcuni di questi non sono ancora ottimamente giocati a golf - ho dedicato molto tempo a far funzionare tutto.

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>

Originariamente basato sulla soluzione di 556 byte abbandonata di Traktor53 . Pubblicato con il permesso .


Lista di cose da fare

  1. Trova un modo meno costoso di palindromizzare le corde.
  2. Prova a migliorare la sostituzione RLE.
  3. Verifica se le ultime 4 sostituzioni possono essere eliminate in qualsiasi modo.
  4. Scopri se la creazione dell'immagine in quarti porterebbe a risparmi significativi - sospetto di no!
  5. Aggiungi spiegazione aggiornata.

Stavi ipotizzando se la compressione del quadrante potesse fornire utili guadagni ... L'ho fatto funzionare nel mio caso, ma l'applicabilità più ampia è incerta.
traktor53,

@ Traktor53: Molto ben fatto :) Quell'elemento mancava dalla mia lista di cose da fare in una modifica, sperando di avere un po 'di tempo per esaminarlo domani.
Shaggy,

Sono impressionato. A proposito, string1[string2.indexOf( char) ]|| char è una costruzione che ho provato ma non sono riuscito a ridurre i byte con. Molto bene!
traktor53,

3

JavaScript 556 468 462 448 438 387 379 byte

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>

Meno golfato

_=>(
  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
)

Compressione

Il post originale (556 byte) utilizzava cifre decimali per indicare la ripetizione di un carattere precedente nella ragnatela. Le versioni più recenti comprimono la metà sinistra del Web in caratteri a 7 bit in cui il nibble meno significativo è un indice in un set di caratteri e tre bit di ordine superiore specificano il numero di caratteri da generare più 1: valori 000e 001non vengono utilizzati, 010significa 1 carattere e 111significa sei. Questa costruzione evita la produzione di caratteri di controllo.

Grazie a @Shaggy per suggerimenti e trucchi utili nella riscrittura.

Come funziona

Il quadrante in alto a sinistra è stato riscritto per includere segnaposto per le metà superiore e inferiore del web:

  • "s" per scambiare spazio con trattino basso,
  • "u" per scambiare la sottolineatura con lo spazio,
  • 'q' per scambiare la citazione con spazio e
  • 'h' per scambiare lo spazio con la citazione (nascosta)

dando:

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

che è stato compresso usando

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

Decompressione

La decompressione associa i caratteri codificati ai caratteri effettivi per ciascun quadrante. Nel codice,

  • Xè un elenco di caratteri indicizzati che varia tra le sezioni web superiore e inferiore. Fornisce valori per segnaposto "suqh" e riflessi di caratteri duri come tra '+' e 'O'.
  • 'L' e 'R' sono elenchi di caratteri che forniscono riflessi di carattere tra le metà sinistra e destra del web.

Codifica

La codifica del carattere centrale è vincolata all'utilizzo di un'espansione a carattere singolo. L'ordine del set di caratteri è vincolato in modo da non produrre caratteri DEL (0x7F), Grave (0x60) o barra rovesciata (0x5C) durante la compressione.


Questo è un aggiornamento tardivo in risposta all'attività sulla domanda.


Ecco una versione da 517 byte (nota: devi solo contare i byte della funzione stessa). L'ho scritto molto rapidamente durante un'interruzione del fumo, quindi probabilmente può essere ulteriormente diluito ma dovrebbe iniziare. Fammi sapere se hai domande.
Shaggy,

@Shaggy grazie per i suggerimenti e i consigli. Stai certo che studierò la tua penna per vedere come hai lavorato .reducee .mapche non ho potuto. Nel frattempo ho modificato l'algoritmo per ottenere 468 byte! Buon fine settimana.
traktor53,

Tutti questi mesi dopo e ho preso un altro passaggio sulla tua soluzione originale, giocando a golf fino a 460 byte (finora). Ti dispiace se postalo ora che hai scelto un metodo diverso?
Shaggy,

Per niente @Shaggy, vai avanti a scrivere :-) Non vedo l'ora di leggere il risultato.
traktor53,

Molte grazie. Pubblicato .
Shaggy,

2

/// , 463 byte

/=/---//</ : //;/"""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||
|&;%|

Provalo online!


2

Bash, 391 byte

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

Provalo online!

Complimenti a tutti coloro che sono stati in grado di battere la compressione al volo: sono io a buttare la spugna! Riconosco le persone di Python che sono entrate per prime nell'approccio zlib / gzip.


2

Perl 5 439 402 byte

Piuttosto che usare base64 / gzip, questo approccio consiste nel rispecchiare e capovolgere il quadrante in alto a sinistra, con opportune sostituzioni

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}

Provalo online

Per chi fosse interessato, una versione commentata:

# 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
}

1

C #, 484 byte

Nota: non sono al 100% su come segnarli. Con l'intestazione e il piè di pagina sono 544 byte.

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());}

Ungolfed:

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());
}

Provalo online!


1

Ruby 1.9.3, 1102 763 byte

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

Provalo online!


5
Dato che i dati effettivi da stampare sono solo 780 byte, l'utilizzo di putsuno script semplice e una stringa multilinea dovrebbe richiedere ~ 790 byte. La tua enorme stringa da scansionare e il codice per elaborarla finisce per essere più lungo della soluzione ingenua ...
ShadowRanger



1

C #, 401 399 397 396 389 byte

Scritto questo come una scusa per provare la codifica di Huffman

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="");

Ungolfed:

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 = "");

Versione precedente non modificata con commenti:

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;
    }
}

Provalo online!


Bella risposta! +1. Puoi giocare a golf di due byte cambiando while(v>0){in a fore posizionando gli interi e v/=2al suo interno:for(int p=0,l=0;v>0;v/=2){
Kevin Cruijssen,

@KevinCruijssen È geniale, grazie! Immagino sarà abbastanza raro per un whileoccupare lo stesso spazio di un for, ora.
Geoffrey,

Bene, solo nei casi in cui non hai variabili e hai solo un corpo a linea singola hanno la stessa lunghezza. Cioè questi tre tutti fanno lo stesso e tutti e tre sono della stessa lunghezza: for(;someCondition;someAction);vs for(;someCondition;)someAction;vs while(someCondition)someAction;. Ma nel complesso forè davvero più breve di while, quindi uso quasi sempre forme stesso.
Kevin Cruijssen,

1

Python 2 , 395 byte

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

Provalo online!


1

Spazio bianco , 4723 4584 byte

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

Lettere S(spazio), T(scheda) e N(nuova riga) aggiunti solo come evidenziazione.

Provalo online .

Spiegazione:

Uso l'approccio spiegato in questo mio suggerimento su Whitespace . L'approccio descritto è il seguente:

  • Spingi prima i valori meno un valore costante per ogni personaggio che vogliamo produrre in ordine inverso nello stack
  • Quindi creare un LOOP e all'interno di questo loop facciamo:
    • Pop l'attuale cima dello stack
    • Aggiungi il valore costante a questo valore corrente
    • Stampa questo nuovo valore come carattere su STDOUT
    • Vai alla successiva iterazione del loop
  • Questo uscirà con un errore che richiede due valori nello stack quando si usa la funzione add dopo che abbiamo emesso tutti i caratteri.

Il valore costante ideale era 94, che ho generato con questo programma Java . L'uso di 94darebbe un programma di spazi bianchi con una lunghezza totale di 7508 byte (7481 + 27 byte per il ciclo) o 5791 byte (5764 + 27) se implementiamo già Duplicate Top ( SNS) ovunque due degli stessi caratteri siano adiacenti.

Successivamente ho usato manualmente Copia 1st ( STSSTN), Copia 2nd ( STSSTSN) e Copia 3rd ( STSSTTN) (1-indicizzato) ovunque salvasse i byte. Che può anche essere trovato nei suggerimenti su Whitespace. Che in totale ha portato al programma 4584 byte che vedi qui.


1

05AB1E , 204 byte

" '(+-./: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».º

Provalo online.
Verifica che sia corretto.

Spiegazione:

" '(+-./: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)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.