Today is May 5th which means it's Star-Wars Day episode II: Revenge of the 5th.

For this task, you will output the following image of a Sith TIE-fighter:

 ____         ____
/\  /\ ___   /\  /\
| \/  /   \  | \/ |
|--[=| (+) [=|-[]-|
| /\  \___/  | /\ |
\/__\/       \/__\/

Your output may have any extra whitespace that doesn't affect the representation of the image. You may output a list of lines instead of a string with newlines.

This is , so shortest answer wins.

(If it's May 4th in your time zone, try X-Wing Starfighter)

  • \$\begingroup\$ Wasn’t sith day May the 6th \$\endgroup\$ May 4 at 16:43
  • \$\begingroup\$ @TheEmptyStringPhotographer There is apparently much disagreement about whether to recognize May 5 or 6: r/memes: Revenge of the 5th or 6th? As far as I can see, it's generally recognized as May 5 simply because it's the day after May 4. \$\endgroup\$
    – noodle man
    May 4 at 16:48

3 Answers 3


Charcoal, 53 bytes

“ HX⁵⌊ω#⊘δ⌈L¿≦ M”‖MC¹³¦⁰M²↑-[=M²↑“ ↙~⌕EF℅≔?⌊Σ⁵À⌈Xζ“2~

Try it online! Link is to verbose version of code. Explanation:

“ HX⁵⌊ω#⊘δ⌈L¿≦ M”

Draw the left half of the outside of a wing using a compressed string.


Reflect to complete the wing.


Copy it to the other wing.


Change the left wing to be an inside view.

M²↑“ ↙~⌕EF℅≔?⌊Σ⁵À⌈Xζ“2~

Draw the body using a compressed string.


Ruby, 122 120 bytes

-3.upto(2){|j|puts (k=j.abs)<1?'|--[=| (+) [=|-[]-|':'`D;:>hXQQQYVV`D;:>f'.bytes.map{|i|'|  _\/  _'[i*6/6**k%6*k/j]}*''}

Try it online!

This prints the centre row as a literal, and uses two slightly different base-6 encodings for the upper and lower rows as follows

      Upper Lower
    0   |     |
    1   _   space
    2 space space
    3 space   _
    4   /     \
    5   \     /  

This is the same length as the output, so it just beats the "print the literal" solution. It can probably be shortened a bit, but printing the literal with a few naive substitutions might be a shorter approach.


05AB1E, 74 bytes

Aß#™`@¬:¨úëH±ç†∍{Þθ¶@M/Š[cmγ¾?N¨‹}ÚŦaoé€-èα¤ÆÖÑMÓ•"_ \/|

Outputs as a list of characters.

Try it online. (The J in the footer is to join all characters together to a single string. Feel free to remove it to see the actual result.)


Compressing the entire thing (using the default ASCII-art compression technique) seems to be the shortest..

                  # Push compressed integer 5469072357431047243168628920623877613141385035707549597465492997649394965642722070200968674642555323502935338931850326894978849043270
 "_ \/|\n-[=])+(" # Push this string
  Åв              # Convert the large integer to this custom base,
                  # basically converting it to base-length, and indexing into the string
                  # (after which the list of characters is output implicitly as result)

See this 05AB1E tip of mine (section How to compress large integers?) to understand why •2%jи\nAß#™`@¬:¨úëH±ç†∍{Þθ¶@M/Š[cmγ¾?N¨‹}ÚŦaoé€-èα¤ÆÖÑMÓ• is 5469072357431047243168628920623877613141385035707549597465492997649394965642722070200968674642555323502935338931850326894978849043270.

  • Here an approach using vertical reflection and manually fixing the _s: 79 bytes
  • Here an approach using two replacement 0s, and manually replacing them with both \/__\/: 79 bytes

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.