Skip to main content
2 of 3
added 2149 characters in body
Kevin Cruijssen
  • 127.5k
  • 11
  • 141
  • 381

05AB1E, 42 41 bytes

•Λ¦¶%ïâ¦IΘ₅ǝ•“_.1\|/ ^“ÅвJ1¡7jεƵ`S£`I×sJ,

Try it online or verify the first 10 test cases.

Original 05AB1E (legacy) 42 bytes answer:

õõ'/„/.„__)©" ^/|.|.|__"2ô€.∞I×+®í„/\`:+.c

Try it online or verify the first 10 test cases.

Explanation:

•Λ¦¶%ïâ¦IΘ₅ǝ•  # Push compressed integer 150721017596363166577590272
 “_.1\|/ ^“Åв  # Convert it to custom base-"_.1\|/ ^"
               # (basically convert it base-length, and index it into the string)
  J            # Join this list of characters to a single string
   1¡          # Split it on the 1s to get the lines
     7j        # Make each string length 7 by padding leading spaces:
               #  ["     ^ ",
               #   "    /|\",
               #   " /\ .|.",
               #   "/..\.|.",
               #   "_______"]
ε              # Foreach over these lines:
 Ƶ`S           #  Push compressed integer 223 as list of digits: [2,2,3]
    £          #  Split the line into those parts
     `         #  Pop and push all three parts separated to the stack
      I×       #  Repeat the top string the input amount of times
        s      #  Swap the top two strings on the stack
         J     #  Join the three strings together
          ,    #  Print the line with trailing newline

See this 05AB1E tip of mine (section How to compress large integers?) to understand why •Λ¦¶%ïâ¦IΘ₅ǝ• is 150721017596363166577590272 and Ƶ` is 223.
This 05AB1E tip was used to generate the ASCII art.


Uses the legacy version of 05AB1E because it can concat lists of strings with +, where the new version would require øJ. The mirror builtin is a byte longer in the legacy version however: €.∞. The is necessary, because the legacy version automatically joins a list of strings by newlines after a mirror.

õ              # Push an empty string ""
 õ             # And again
  '/          '# Push "/"
    „/.        # Push "/."
       „__     # Push "__"
          )    # Wrap all in a list: ["","","/","/.","__"]
           ©   # Store this list in variable `®` (without popping)
" ^/|.|.|__"2ô # Push this string, and split it in parts of size 2:
               #  [" ^"."/|","|.","|.","__"]
 €.∞           # Overlap mirror each: [" ^ ","/|\","|.|","|.|","___"]
    I×         # Repeat each the input amount of times as string
      +        # Concat the lines in the two lists together
®              # Push list `®` again
 í             # Reverse each inner string
  „/\`:        # Replace all "/" with "\"
       +       # Concat the lines in the two lists together again
.c             # Join the lines by newlines, and centralize everything
               # (after which the result is output implicitly)
Kevin Cruijssen
  • 127.5k
  • 11
  • 141
  • 381