The 21 Hairstyles of the Apocalypse

16

The 21 Hairstyles of the Apocalypse

Diberikan daftar angka antara 1 dan 21 (atau 0 dan 20) menghasilkan gambar "dijahit bersama" dari wajah-wajah berikut ( lihat aturan untuk informasi jahitan ):

     ___           ,,,           ooo           ===           +++           ###          -*~*-     
    (o o)         (o o)         (o o)         (o o)         (o o)         (o o)         (o o)     
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-

     ***           |||           _/7           )))           (((           xxx           @__      
    (o o)         (o o)         (o o)         (o o)         (o o)         (o o)         (o o)     
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-

     ((_           >X<           '*`           ^^^           )|(           \|/           &&&      
    (o o)         (o o)         (o o)         (o o)         (o o)         (o o)         (o o)     
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-

Setiap wajah unik yang terdaftar di baris baru (# adalah ID integer untuk wajah):

     ___      
    (o o)     
ooO--(_)--Ooo #1

     ,,,      
    (o o)     
ooO--(_)--Ooo #2

     ooo      
    (o o)     
ooO--(_)--Ooo #3

     ===      
    (o o)     
ooO--(_)--Ooo #4

     +++      
    (o o)     
ooO--(_)--Ooo #5

     ###      
    (o o)     
ooO--(_)--Ooo #6

    -*~*-     
    (o o)     
ooO--(_)--Ooo #7

     ***      
    (o o)     
ooO--(_)--Ooo #8

     |||      
    (o o)     
ooO--(_)--Ooo #9

     _/7      
    (o o)     
ooO--(_)--Ooo #10

     )))      
    (o o)     
ooO--(_)--Ooo #11

     (((      
    (o o)     
ooO--(_)--Ooo #12

     xxx      
    (o o)     
ooO--(_)--Ooo #13

     @__      
    (o o)     
ooO--(_)--Ooo #14

     ((_      
    (o o)     
ooO--(_)--Ooo #15

     >X<      
    (o o)     
ooO--(_)--Ooo #16

     '*`      
    (o o)     
ooO--(_)--Ooo #17

     ^^^      
    (o o)     
ooO--(_)--Ooo #18

     )|(      
    (o o)     
ooO--(_)--Ooo #19

     \|/      
    (o o)     
ooO--(_)--Ooo #20

     &&&      
    (o o)     
ooO--(_)--Ooo #21

Wajahnya adalah sebagai berikut:

    hhhhh     
    (o o)     
ooO--(_)--OooS

Di mana hgaya rambut apokaliptik dinamis dan Spotensi tanda hubung jahitan.


Contohnya

Memasukkan: [1,2,3,4,5]

Keluaran:

     ___           ,,,           ooo           ===           +++      
    (o o)         (o o)         (o o)         (o o)         (o o)     
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-

Memasukkan: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]

Keluaran:

     ___           ,,,           ooo           ===           +++           ###          -*~*-          ***           |||           _/7           )))           (((           xxx           @__           ((_           >X<           '*`           ^^^           )|(           \|/           &&&      
    (o o)         (o o)         (o o)         (o o)         (o o)         (o o)         (o o)         (o o)         (o o)         (o o)         (o o)         (o o)         (o o)         (o o)         (o o)         (o o)         (o o)         (o o)         (o o)         (o o)         (o o)     
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-

Masukan: ["Fraggle Rock"] / [22]/ [-21041024]/[22,23,24,25,26]

Keluaran: Nobody cares.


Memasukkan: [1,1,1,1]

Keluaran:

     ___           ___           ___           ___      
    (o o)         (o o)         (o o)         (o o)     
ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-

Aturan

  • Mendahului dan mengikuti baris baru / spasi / tanda hubung baik-baik saja.
  • Wajah dapat muncul lebih dari satu kali pada input.
  • Jika ada nomor yang tidak valid dalam input Anda mungkin memiliki perilaku yang tidak terdefinisi.
  • Jahitan:
    • Wajah yang dijahit akan digabungkan dengan satu tanda hubung pada baris bawah (3).
    • Wajah-wajah semua akan berada pada satu baris (tidak seperti gambar pertama).
  • Input dapat 0 atau 1 diindeks, dengan 20 sebagai maksimum untuk 0, 21 untuk 1.
  • Ini adalah , kemenangan byte-count terendah.
Guci Gurita Ajaib
sumber
1
Sangat mirip: codegolf.stackexchange.com/q/34773/29750
NinjaBearMonkey
7
Nomor 7 tampaknya melanggar bagian "wajah adalah sebagai berikut"
boboquack
10
Semua test case Anda menyertakan tanda hubung "penjahitan" tambahan, yang tampaknya bertentangan dengan spek.
Shaggy
3
Kilroy ada di sini.
msh210
2
@ MagicOctupusUrn, bisakah Anda mengatasi masalah tanda hubung tambahan yang saya angkat di atas?
Shaggy

Jawaban:

9

Japt -R , 122 117 113 110 109 107 105 104 103 102 100 99 byte

1-diindeks, dengan pembungkus indeks. Saya telah mengikuti spek di sini, yang membutuhkan tanda hubung di antara baris terakhir dari setiap wajah, bukan pada kasus uji, yang mencakup tanda hubung setelah baris terakhir dari setiap wajah.

[Umg"@__((_>X<'*`^^^)|(\\|/"i"&_,o=+#*|)(x"m³ ò3 i7"-*~"ê)iA"_/7")¡"(o o)"á"O--(_)--O"ûoDÃq-]ûD m¸

Cobalah

[                                             :Construct an array of 3 elements
Umg"@.../"i"&...x"m³ ò3 i7"-*~"ê)iA"_/7")     :FIRST ELEMENT (F)
U                                             :  Input array
 m                                            :  Map
  g                                           :    Index into
   "@.../"                                    :      Literal string
          i                                   :      Prepend
           "&...x"                            :        Literal string
                  m                           :        Map
                   ³                          :          Repeat 3 times
                     ò3                       :      Split into chucks of 3
                        i7                    :      Insert at 0-based index 7
                          "-*~"ê              :        "-*~" palindromised
                                )             :      End insert
                                 iA"_/7"      :      Insert "_/7" at index 10
                                        )     :  End map
¡"(o o)"Ã                                     :SECOND ELEMENT (S)
¡                                             :  Map input array
 "(o o)"                                      :    Literal string
        Ã                                     :  End map
¡"O...O"ûoDÃq-                                :THIRD ELEMENT (T)
¡                                             :  Map input array
 "O...O"                                      :    Literal string
        ûo                                    :    Centre pad with "o"
          D                                   :      To length 13
           Ã                                  :  End map
            q-                                :  Join with "-"
]                                             :End array
 ûD                                           :Centre pad each string in F & S to length 13 with spaces, does nothing to T as it will always be at least 13 characters long
    m                                         :Map
     ¸                                        :  Join F & S with spaces. Split T on spaces, creating a singleton array which gets cast back to a string on output
                                              :Implicit output, joined with newlines
Shaggy
sumber
1
Pekerjaan yang bagus menjadikannya 100. Metode char-mirror yang kami inginkan akan sangat berguna di sini.
Oliver
Juga, bahwa bungkus &untuk mengambil keuntungan adalah jenius. Terutama karena itu menjadikannya berbasis 1.
Oliver
Itu sebaliknya; Saya menyadari bahwa saya bisa pindah ke &sana jika saya membuatnya berdasarkan 1;) Masih merasa ada lebih banyak untuk golf di sini tapi sudah terlambat sehingga harus menunggu sampai besok.
Shaggy
6

Python 2 , 209 byte

def f(a):s=t=u='\n';i=0;exec"s+=(\"_,o=+#-*|_)(x@(>'^)\\&_,o=+#**|/)(x_(X*^||&_,o=+#~*|7)(x__<`^(/&\"[a[i]::21]+'*-'*(a[i]==6)).center(14);t+='    (o o)     ';u+='ooO--(_)--Ooo-';i+=1;"*len(a);print s+t+u[:-1]

Cobalah online!

Pengindeksan berbasis 0; tidak ada yang pintar di sini, hanya data yang diakses melalui slicing dan menggunakan exec bukan loop.

Chas Brown
sumber
186 byte
Lynn
6

Arang , 103 102 byte

E²⪫Eθ⎇ι(o o)⪫ײ§ -⁼λ⁶§⪪”|″:αuxkτT↷K[ï�↔ς↨?◧BZ@C←↑⊞A⧴M✂↶ºKf÷H#S⦃J&≔⁰∧5À³≕r‹▷”³λ× ⁹M⁴←⪫EθooO--(_)--Ooo¦-

Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:

E²⪫Eθ

Ulangi input dua kali. Setiap hasil kemudian dicetak secara tersirat pada barisnya sendiri.

⎇ι(o o)

Pada loop kedua, cukup hasilkan mata.

⪫ײ§ -⁼λ⁶

Bungkus gaya rambut 6 in -s, gaya rambut lainnya di luar angkasa.

§⪪”|″:αuxkτT↷K[ï�↔ς↨?◧BZ@C←↑⊞A⧴M✂↶ºKf÷H#S⦃J&≔⁰∧5À³≕r‹▷”³λ

Ekstrak tiga karakter gaya rambut dari string terkompresi.

× ⁹

Masukkan sembilan spasi di antara setiap rambut atau mata.

M⁴←

Pindahkan 4 spasi ke kiri.

⪫EθooO--(_)--Ooo¦-

Cetak sisa wajah, bergabung dengan a -.

Neil
sumber
6

R , 413 391 byte

Terima kasih Giuseppe untuk 22 byte lebih sedikit dan mendapatkan ini di bawah 400 byte.

function(s,n=length(s)){I=intToUtf8
U=utf8ToInt
R=rep
K=cat
a=U("_,o=+#^*|&)(x")
b=c("@__","((_",">X<","'*`","",")|(","\\|/","","-*~*-","_/7")
s[s==7]=22;s[s==10]=23;s[s==18]=7;s[s==21]=10
for(i in s)K(I(c(rep(32,4+(i!=22)),"if"(i<14,R(a[i],3),U(b[i-13])),R(32,5+(i!=22)))))
K("
",I(R(c(R(32,3),40,111,32,111,41,R(32,6)),n)),"
")
K(I(40+R(c(x<-c(71,71,39,5,5),0,55,1,rev(x),5),n)[-(14*n)]))}

Cobalah online!

JayCe
sumber
Anda mungkin harus alias utf8ToIntdanintToUtf8
Giuseppe
391 byte
Giuseppe
@Giuseppe poin bagus! Saya malu dengan indeks saya swap itu sangat mahal. Saya akan mengerjakannya.
JayCe
@JayCe Anda melewatkan satu lagi repuntuk mempersingkat:for(i in s)K(I(c(rep<--
Kirill L.
Terima kasih @ KirillL. ! Saya akan memastikan untuk memasukkan ini ketika saya akhirnya punya waktu untuk meninjau kode ini.
JayCe
5

JavaScript (ES6), 200 199 byte

Mengharapkan input 1-diindeks.

a=>[1,0,2].map(y=>a.map(n=>s=y&2?'ooO--(_)--Ooo':`    ${p='( -'[y*n-7?y:2]}${"o o___,,,ooo===+++###*~****|||_/7)))(((xxx@__((_>X<'*`^^^)|(\\|/&&&".substr(y*n*3,3)}${y?p:')'}    `).join(s[3])).join`
`

Cobalah online!

Berkomentar

a =>                              // given the input array a[]
  [1, 0, 2].map(y =>              // for each row y:
    a.map(n =>                    //   for each integer n in a[]:
      s =                         //     let s be the content of this row
        y & 2 ?                   //     if this is the 3rd row:
          'ooO--(_)--Ooo'         //       use a hardcoded string
        :                         //     else:
          `    ${                 //       append 4 spaces
            p = '( -'[            //       append and save in p:
              y * n - 7 ? y : 2   //         '(' if y = 0 (2nd row)
            ]                     //         ' ' if y = 1 and n != 7
          }${                     //         '-' if y = 1 and n = 7
            "o o___,,,ooo(...)"   //       append the middle pattern (NB: truncated string)
            .substr(y * n * 3, 3) //       which is always the eyes if y = 0
          }${                     //
            y ? p : ')'           //       append p for the 1st row or ')' for the 2nd row
          }    `                  //       append 4 spaces
    ).join(s[3])                  //   join with the 4th character of s (space or hyphen)
  ).join`\n`                      // join with line-feeds
Arnauld
sumber
4

Ruby , 164 byte

->a{puts a.map{|i|j="_,o=+# *| )(x    ^  &"[i];(j<?!?%w{@__ ((_ >X< '*` -*~*- )|( \|/ _/7}[i%11-2]:j*3).center(14)}*"","    (o o)     "*k=a.size,"ooO--(_)--Ooo-"*k}

Nol diindeks. Cobalah online!

Semua hal sulit terjadi di baris paling atas.

"_,o=+# *| )(x ^ &"berisi semua gaya rambut dengan 3 karakter yang identik, dari mana kita memilih ikarakter ke j,.

jika jbukan spasi, ekspresi berikut mengembalikan 3 salinan karakter. Jika itu ruang, kami memilih gaya rambut yang benar dari antara %w{}. Gaya rambut "aneh" adalah angka 6,9,13,14,15,16,18,19 dan i%11-2memberikan hash yang sempurna untuk0..7

j<?!?%w{@__ ((_ >X< '*` -*~*- )|( \|/ _/7}[i%11-2]:j*3

Yang tersisa adalah mengisi 14 ruang (tengah) dan mencetak jumlah lumayan / bawah.

Level River St
sumber
Anda bisa memasukkan tanda kurung dicenter(14)
Kirill L.
2

Python 2 , 204 byte

i=input();l=len(i)
for l in[' '*4+' -'[x==6]+"_,o=+#**|_)(x@(>'^)\\&_,o=+#~*|/)(x_(X*^||&_,o=+#**|7)(x__<`^(/&"[x::21]+' -'[x==6]+' '*5for x in i],['    (o o)     ']*l,['ooO--(_)--Ooo-']*l:print''.join(l)

Cobalah online!

ovs
sumber
2

Java 8, 273 263 byte

a->{String r[]={"","",""},s="    ",t="ooO--(_)--Ooo",u="(o o)";for(int i:a){r[0]+=s+(i==7?"-":" ")+"___,,,ooo===+++###*~****|||_/7)))(((xxx@__((_>X<'*`^^^)|(\\|/&&&".split("(?<=\\G...)")[i]+(i==7?"-":" ")+s+" ";r[1]+=s+u+s+" ";r[2]+=t+"-";}return t.join("\n",r);}

Cobalah online.

Penjelasan:

a->{                       // Method with integer-array parameter and String return-type
  String r[]={"","",""},   //  Result-String, starting at three empty rows
         s="    ",         //  Temp-String of four spaces for the first and second rows
         t="ooO--(_)--Ooo",//  Temp-String for the third row
         u="(o o)";        //  Temp-String for the second row
  for(int i:a){            //  Loop over the input-array
    r[0]+=                 //   Append to the first row:
          s                //    Four spaces
          +(i==7?          //    If the number is 7 (edge-case):
             "-"           //     Append "-"
            :              //    Else:
             " ")          //     Append a single space
          +"___,,,ooo===+++###*~****|||_/7)))(((xxx@__((_>X<'*`^^^)|(\\|/&&&".split("(?<=\\G...)")[i]
                           //    Append the correct hat based on `i`
          +(i==7?"-":" ")  //    If the number is 7, append "-" again, else a space
          +s+" ";          //    And append five spaces
    r[1]+=                 //   Append to the second row:
          s                //    Four spaces
          +u               //    The head
          +s+" ";          //    Five spaces
    r[2]+=                 //   Append to the third row:
          t                //    The hands and bodies
          +"-";}           //    And the stitch "-"
  return t.join("\n",r);}  //  Return the three rows as single newline delimited String
Kevin Cruijssen
sumber
2

R , 247 242 byte

function(a,n=length(a)){for(i in a)cat(format(h[i],,,,"c",14+!20-i))
cat("
","   (o o)     "*n,"
")
cat("ooO--(_)--Ooo"*n,sep="-")}
"*"=rep
h=readLines(,21)
___
,,,
ooo
===
+++
###
-*~*-
***
|||
_/7
)))
(((
xxx
@__
((_
>X<
'*`
^^^
)|(
\|/
&&&

Cobalah online!

Sekarang, mencoba membawa R ke jumlah byte yang lebih mudah dikelola ...

Karena melakukan manipulasi karakter dalam R sangat sia-sia, saya memutuskan untuk mendaftarkan semua pola wajah dan gaya rambut sepenuhnya. Untuk mencetak gaya rambut yang cantik, saya menggunakan formatfungsi justify="centre". Sayangnya, kita perlu menggunakan karakter padding tambahan i==20karena formatmenghitung padding seolah-olah backslash lolos, seperti \\|/.

Versi saat ini tidak menggunakan tanda hubung tambahan.

Sunting: Kredit ke JayCe untuk -2 dan Giuseppe untuk -3 byte.

Kirill L.
sumber
Cintai pendekatan langsung Anda! Saya tidak menyadari bahwa justify="centre"saya mungkin dapat menggunakannya kembali. Kurang dua karakter :"/"=rep
JayCe
dua byte lagi turun:format(h[i],,,,"c",14+!20-i)
Giuseppe
@ Giuseppe sebenarnya -3, jadi lebih baik. @JayCe sangat bagus, bahkan kami tidak menggunakan perkalian, jadi overriding *terlihat lebih baik - sekarang menyerupai string * numberoperasi yang umum di banyak bahasa lain!
Kirill L.
2

C!( C-Wow 1.1.0), 251 Bytes

(Membutuhkan argumen untuk diteruskan pada eksekusi program, dipisahkan oleh ruang)

SS("     (o o)     \nooO--(_)--Ooo-",'\n') SS("___A,,,AoooA===A+++A###A-*~*-A***A|||A_/7A)))A(((AxxxA@__A((_A>X<A'*`A^^^A)|(A\\|/A&&&",'A') F(MR("0",A(0),"23"),W("?");E) I(AC,W("     ");RI(TN(A(i))+2);W("     ")); WL I(AC,W(RI(0))); WL I(AC,W(RI(1)));

Versi tidak disatukan:

STRSPLIT("     (o o)     \nooO--(_)--Ooo-", '\n')
STRSPLIT("___A,,,AoooA===A+++A###A-*~*-A***A|||A_/7A)))A(((AxxxA@__A((_A>X<A'*`A^^^A)|(A\\|/A&&&", 'A')
IF(MATHRANGE("0", ARGS(0), "23"), PRINT("?"); E)
LOOP(ARGC, PRINT("     "); READI(TONUM(ARGS(i)) + 2); PRINT("     "));
PRINTL
LOOP(ARGC, PRINT(READI(0)));
PRINTL
LOOP(ARGC, PRINT(READI(1)));
0x22fe
sumber
1

Merah , 333 319 byte

func[x][h: copy[]i: 0
foreach[k l m]{___,,,ooo===+++###   ***|||_/7)))(((xxx@__((_>X<'*`^^^^^^)|(\|/&&&}[alter h
pad pad/left either 7 = i: i + 1["-*~*-"][rejoin[" "k l m" "]]9
14]foreach y x[prin h/(y)]print append/dup copy"^/"{    (o o)     }l: length? x
print take/part append/dup copy""{ooO--(_)--Ooo-}l 14 * l - 1]

Cobalah online!

Galen Ivanov
sumber
1

Ruby , 163 byte

->a{puts a.map{|i|(i==6?"-*~*-":i<9?"_,o=+#~*|"[i]*3:"_/7)))(((xxx@__((_>X<'*`^^^)|(\\|/&&&"[3*i-27,3]).center 14}*"","    (o o)     "*k=a.size,"ooO--(_)--Ooo-"*k}

Cobalah online!

Diindeks 0. Saya mengutak-atik jawaban Level River St dan menemukan pendekatan lain untuk menyandikan gaya rambut, tampaknya golfiness serupa. Di sini, kami memperlakukan potongan rambut 5-char "terpanjang" sebagai kasus khusus, pola-pola sepele di bagian pertama dari daftar dikodekan oleh masing-masing 1 karakter, dan pada bagian kedua semua pola 3-karakter terdaftar secara literal, tidak peduli - apakah karakter-karakter itu berbeda atau tidak. Akhirnya muncul juga muka monyet-muka.

Kirill L.
sumber
1

C (gcc) , 210 212 byte

-4 bytes berkat ceilingcat . (Itu tumbuh lagi ketika saya memperbaiki bug yang dimiliki kode asli.)

Cukup mudah.

#define r(s)for(i=!puts("");i<n;printf(s,c,"___,,,ooo===+++###*~****|||_/7)))(((xxx@__((_>X<'*`^^^)|(\\|/&&&"+x*3,c=x^6?32:45,x=l[i++]));
x,c,i;f(l,n)int*l;{r("%5c%.3s%-6c")r("    (o o)     ")r("ooO--(_)--Ooo-")}

Cobalah online!

gastropner
sumber
206 byte
ceilingcat
1

PowerShell , 187 171 byte

-16 byte berkat mazzy

''+($args|%{($x=' '*4)+($y=' -'[$_-eq6])+("___,,,ooo===+++###*~****|||_/7)))(((xxx@__((_>X<'*``^^^)|(\|/&&&"|% s*g($_*3)3)+$y+$x;$z++})
"$x(o o)$x "*$z
"ooO--(_)--Ooo-"*$z

Cobalah online!

Diindeks 0, memiliki tanda hubung tambahan.

Belum dibuka:

''+($args|%{
    ($x=' '*4) + ($y=' -'[$_-eq6]) + 
    ("___,,,ooo===+++###*~****|||_/7)))(((xxx@__((_>X<'*``^^^)|(\|/&&&"|% substring ($_*3) 3) +
    "$y$x ";
    $z++
    })
"$x(o o) $x"*$z
"ooO--(_)--Ooo-"*$z

Tidak ada yang terlalu mewah. Hanya baris pertama yang memiliki beberapa logika yang layak di dalamnya. Ini mengindeks ke dalam string rambut dengan menggunakan $current_entry_value*3dan mengambil potongan itu dengan menggunakan substring , sebelum menggabungkan semua potongan menjadi satu garis besar. Mengalami masalah `melarikan diri dari siset berikutnya, membuat saya bertanya-tanya mengapa saya mendapatkan kesalahan IndexOutOfBounds tapi itu sudah diperbaiki. Sekarang menggunakan cara yang jauh lebih baik untuk menggabungkan baris pertama.

195 Bytes untuk mengikuti spesifikasi tanpa tanda hubung leading / trailing

Veskah
sumber
1
bagus 7. Anda bisa menghemat beberapa byte Cobalah online!
mazzy
1
dan masih banyak lagi Cobalah secara online!
mazzy
1

Python 3 , 240 byte

h=[x*3for x in"_,o=+#*|)(x^&"]
for i,*l in(6,"-*~*-"),(9,"_/7"),(13,"@__","((_",">X<","'*`"),(18,")|(","\|/"):h[:i]+=l
*x,=map(int,input().split())
l=len(x)
p=print
p(*(h[i].center(13)for i in x))
p("    (o o)     "*l)
p("ooO--(_)--Ooo-"*l)

Cobalah online!

Daniil Tutubalin
sumber
0

Pesona Rahasia , 313 byte

B6?>8b2*B0il2)?\B" "9a2*
{" ___ "D
{" ,,, "D
{" ooo "D
{" === "D
{" +++ "D
{" ### "D
{"-*~*-"D
{" *** "D
{" ||| "D
{" _/7 "D
{" ))) "D
{" ((( "D
{" xxx "D
{" @__ "D
{" ((_ "D
{" >X< "D
{" '*` "D
{" ^^^ "D
{" )|( "D
{" \|/ "D\
{" &&& "D{
{"    " LLRB͍!{
"-(_)--Ooo-"{*@\~4-:l͍e,:{$ak$"    (o o)     "{*$ak$"ooO-"

Cobalah online!

Ringkas secara wajar dalam hal mengompresi string dan menggunakan kembali segmen jika memungkinkan serta menggunakan nilai input sebagai offset lompatan langsung saat Bpeternakan.

Jika ruang trailing berlebih diizinkan, ini dapat dipersingkat 2 byte dengan menghilangkan 4-pada baris terakhir. +2 byte untuk a 1-jika final -dimaksudkan tidak ada di sana (cocokkan spec, melanggar contoh).

Potongan, " (o o) "menjengkelkan tidak mungkin untuk dikompres, karena membangunnya menggunakan hal-hal seperti " "4*akhirnya menjadi jumlah byte yang persis sama.

Lulus input> 21 melakukan hal-hal menyenangkan. Misalnya satu 22 memberikan mencukur dekat .

Draco tidak lagi percaya pada SE
sumber