[Question]
  [
Write a program or function that takes in a single-line string. You can assume it only contains [printable ASCII](https://en.wikipedia.org/wiki/ASCII#Printable_characters). Print or return a string of an ASCII art rocket such as 
```
  |
 /_\
 |E|
 |a|
 |r|
 |t|
 |h|
 |_|
/___\
 VvV
```
with the input string written from top to bottom on the fuselage. In this case the input was `Earth`. The height of the rocket (including flames) is always the length of the string plus five.
Each line in the output may have up to two trailing spaces and there may be a single optional trailing newline. **The shortest code in bytes wins.**
## More Examples:
```
[empty string]
  |
 /_\
 |_|
/___\
 VvV
a
  |
 /_\
 |a|
 |_|
/___\
 VvV
|0
  |
 /_\
 |||
 |0|
 |_|
/___\
 VvV
\/\
  |
 /_\
 |\|
 |/|
 |\|
 |_|
/___\
 VvV
 _ _ [note trailing space]
  |
 /_\
 | |
 |_|
 | |
 |_|
 | |
 |_|
/___\
 VvV
    [4 spaces]
  |
 /_\
 | |
 | |
 | |
 | |
 |_|
/___\
 VvV
SPACEY
  |
 /_\
 |S|
 |P|
 |A|
 |C|
 |E|
 |Y|
 |_|
/___\
 VvV
```
# Leaderboard
```
var QUESTION_ID=91182,OVERRIDE_USER=26997;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
```
```
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
```
```
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
```
  
[Answer]
# Excel VBA, ~~142~~ ~~179~~ ~~175~~ ~~160~~ 155 bytes
**Instruction:**
Set the worksheet of Excel where cell A1 is input and column C as the output. ~~Set the text alignment in column C to center~~. Write and run the following code in the Immediate Window:
```
[C1]="|":[C2]="/_\":T=[A1]&"_":For i=1To Len(T):Cells(i+2,3)="|"&Mid(T,i,1)&"|":Next:Cells(i+2,3)="/__\":Cells(i+3,3)="VvV":[C:C].HorizontalAlignment=-4108
```
**Ungolfed the code:**
```
Sub R()
    [C1] = "|"
    [C2] = "/_\"
    T = [A1]&"_"
    
    For i = 1 To Len(T)
        Cells(i + 2, 3) = "|" & Mid(T, i, 1) & "|"
    Next
    
    Cells(i + 2, 3) = "/__\"
    Cells(i + 3, 3) = "VvV"
    [C:C].HorizontalAlignment = -4108   'Set the text alignment in column C to center
End Sub
```
**Output:**
[![enter image description here](https://i.stack.imgur.com/xGyyV.png)](https://i.stack.imgur.com/xGyyV.png)
**Note:** The font and the color are just a personal choice.
---
*15 bytes saved due to edc65's suggestion. Thanks.*
*5 bytes saved due to Taylor Raine's suggestion. Thanks.*
[Answer]
## Perl 6, 75 bytes
```
"  |\n /_\\".say;" |$_|".say for slurp.chomp.comb;" |_|\n/___\\\n VvV".say;
```
[Answer]
# JavaScript (ES6), 54
Straightforward
```
x=>`  |
 /_\\
 |${[...x+'_'].join`|
 |`}|
/___\\
 VvV`
```
**Test**
```
f=x=>`  |
 /_\\
 |${[...x+'_'].join`|
 |`}|
/___\\
 VvV`
function update() {
  O.textContent=f(I.value)
}
update()
```
```
<input id=I value='hello' oninput='update()'><pre id=O></pre>
```
[Answer]
## Actually, 40 bytes
```
"/___\
 VvV",'_o"|
 |"j'|o" |"+"  |
 /_\
```
Yes, those newlines are supposed to be there.
[Try it online!](http://actually.tryitonline.net/#code=Ii9fX19cCiBWdlYiLCdfbyJ8CiB8ImonfG8iIHwiKyIgIHwKIC9fXA&input=InwwIg)
Explanation:
Newlines are represented by `\n` for easier formatting
```
"/___\\n VvV",'_o"|\n |"j'|o" |"+"  |\n /_\
"/___\\n VvV"                                create the bottom of the rocket
             ,'_o                            get input, append a "_" (for the last section before the jets)
                 "|\n |"j                    insert "|\n |" between every pair of characters
                         '|o                 append "|"
                            " |"+            prepend " |"
                                 "  |\n /_\  create the nose cone
```
[Answer]
# C, ~~83~~, 82 bytes
```
F(char*c){for(puts("  |\n /_\\");*c;printf(" |%c|\n",*c++));puts(" |_|\n/___\\\n VvV");}
```
Test main:
```
int main() {
  F("");
  F("a");
  F("|0");
  F("\\/\\");
  F(" _ _ ");
  F("    ");
  F("SPACEY");
}
```
[Answer]
# Python 2, ~~93~~ ~~66~~ ~~62~~ 61 bytes
A FGITW. Can probably be heavily golfed. Suggestions welcome.
**Edit:** 27 bytes thanks to Mego. 4 bytes thanks to TheBikingViking. 1 byte thanks to user3030010.
[Try It Online!](https://tio.run/##HYlBCsIwFET3OcXwodCiGHFZcCHiXhAK4pcQkWBEk5IUqZC7x8QZePNgxu/08G6TzZbzS79vd425D0QEJAGpWCA1MQmpVPXhM5SvocQOiVZPb107L0hRl40PiLAOF6IlSFekdSWzZK4CVfqXkrqn425/ONO1FxiDdRNMGzvkHw)
```
lambda x:r"""  |
 /_\
 |%s|
/___\
 VvV"""%"|\n |".join(x+"_")
```
[Answer]
# PHP, ~~73~~ ~~72~~ ~~69~~ 62 bytes
```
  |
 /_\
 |<?=join('|
 |',str_split($argv[1]._))?>|
/___\
 VvV
```
Takes the string to print on the fuselage as the first argument from the command line when the script is called.
Improvements:
1. Saved a byte by replacing \n with a real LF newline in the first argument of `join`.
2. Saved three more bytes by appending the rocket base with a single underscore to the input
3. Thanks to [Ismael Miguel](https://codegolf.stackexchange.com/users/14732/ismael-miguel): Saved 7 more bytes by taking advantage of the fact that PHP used to be the "Hypertext preprocessor" so you can output as much text as you want and start the code somewhere in the middle.
[Try it online!](https://beta.tehplayground.com/wBnYIY5ZjParcDZa)
This was fun! :-)
Sample calls:
```
php rocket.php ""
php rocket.php EARTH
php rocket.php "This is a very long rocket"
```
[Answer]
## Haskell, 58 bytes
```
f s="  |\n /_\\\n |"++((:"|\n |")=<<s)++"_|\n/___\\\n VvV"
```
[Answer]
# [brainfuck](http://esolangs.org/wiki/Brainfuck), 179 bytes
```
>-[-[-<]>>+<]>-..[->+>++++<<]>>----.<<++++++++++.>.>>>+[-[--<]>>--]<.[-<+<++>>]<<+.---.<,[<<<.>.>.>.<.>,]<<<.[->>>+<<<]>.>.>>+++.<<.>.>>.<...---.<.<<.>>>------.[-<<<+<+>>>>]<<<.<.
```
[Try it online!](http://brainfuck.tryitonline.net/#code=Pi1bLVstPF0-Pis8XT4tLi5bLT4rPisrKys8PF0-Pi0tLS0uPDwrKysrKysrKysrLj4uPj4-K1stWy0tPF0-Pi0tXTwuWy08KzwrKz4-XTw8Ky4tLS0uPCxbPDw8Lj4uPi4-LjwuPixdPDw8LlstPj4-Kzw8PF0-Lj4uPj4rKysuPDwuPi4-Pi48Li4uLS0tLjwuPDwuPj4-LS0tLS0tLlstPDw8KzwrPj4-Pl08PDwuPC4&input=QUxMQUhVIEFLQkFS)
[Answer]
# Ruby, ~~57~~ 55 bytes
-2 bytes by @ValueInk  
-5 bytes by assuming that there is no newline in the input, as suggested by @manatwork. Newline-less input can be provided for example with `echo -n`, like `echo -n hey | ruby rocket.rb`. 
```
puts'  |
 /_\
 |'+gets.chars*'|
 |'+'|
 |_|
/___\
 VvV'
```
Old version, assumes newline in input:
# Ruby, ~~62~~ 60 bytes
```
puts'  |
 /_\
 |'+gets.chop.chars*'|
 |'+'|
 |_|
/___\
 VvV'
```
[Answer]
# [Retina](http://github.com/mbuettner/retina), ~~44~~ 37 bytes
**7 bytes thanks to Martin Ender.**
```
$
_
.
¶ |$0|
$
¶/___\¶ VvV
^
  |¶ /_\
```
[Try it online!](http://retina.tryitonline.net/#code=JApfCi4KwrYgfCQwfAokCsK2L19fX1zCtiBWdlYKXgogIHzCtiAvX1w&input=Q09ERSBHT0xG)
[Answer]
# [Jelly](https://github.com/DennisMitchell/jelly), ~~37~~ 36 [bytes](https://github.com/DennisMitchell/jelly/wiki/Code-page)
```
;”_⁾ |;Ð€ŒB;“/___\“ VvV”“  |“ /_\”;Y
```
~~Same score as existing entry, but~~ uses a fun new feature - `ŒB`, the vectorised version of `ŒḄ`, known as bounce. Bouncing is running through a list to its end and then back `x[:-1]+x[::-1]` e.g.: `bounce("codegolf") == "codegolflogedoc"`.
-1 byte thanks to Dennis (use the vectorised version of bounce)
How?
```
;”_⁾ |;Ð€ŒB;“/___\“ VvV”“  |“ /_\”;Y - argument: a string, S
                        “  |“ /_\”   - the top of the rocket ["  |", " /_\"] 
;”_                                  - concatenate to make S=S+"_"
   ⁾ |;                              - concatenate to make c=" |"+c
       Ð€                            - map over right argument i.e. for c in S
         ŒB                          - bounce! With vectorisation c[:-1]+c[::-1]
                                       e.g. " |B" -> " |B| "
           ;                         - concatenate with
            “/___\“ VvV”             - the bottom of the rocket ["/___\", " VvV"]
                                  ;  - concatenate the top with everything else
                                   Y - join with line feeds
```
Test it on [**TryItOnline**](http://jelly.tryitonline.net/#code=O-KAnV_igb4gfDvDkOKCrMWSQjvigJwvX19fXOKAnCBWdlbigJ3igJwgIHzigJwgL19c4oCdO1k&input=&args=J0JvdW5jZXkgeWVjbnVvQic)
[Answer]
# [Pyke](https://github.com/muddyfish/PYKE), ~~40~~ ~~37~~ 35 bytes
(Updated to work with latest version)
```
\_+2" ||
"m:"/___\
 VvV"+R"  |
 /_\
```
[Try it here!](https://pyke.catbus.co.uk/?code=%5C_%2B2%22+%7C%7C%0A%22m%3A%22%2F___%5C%0A+VvV%22%2BR%22++%7C%0A+%2F_%5C&input=Earth&warnings=0&hex=0)
[Answer]
# [V](http://github.com/DJMcMayhem/V), ~~41,~~ 39 bytes
```
ys$_òlé
òÎá|I |
Hr/$r\YO  |GpX2á_o VvV
```
[Try it online!](http://v.tryitonline.net/#code=eXMkX8OybMOpCsOyw47DoXxJIHwKSHIvJHJcWU8gIHwbR3BYMsOhX28gVnZW&input=RWFydGg)
Note that for some reason, the online interpreter was producing unexpected results, so I pushed a debug version to the online interpreter that runs a lot slower. It should produce the correct results now.
Since this program contains unprintable characters, here is a hexdump:
```
0000000: 7973 245f f26c e90a f2ce e17c 4920 7c0a  ys$_.l.....|I |.
0000010: 4872 2f24 725c 594f 2020 7c1b 4770 5832  Hr/$r\YO  |.GpX2
0000020: e15f 6f20 5676 56                        ._o VvV
```
[Answer]
# R, 163 bytes
```
v=c();l="\n";for(i in 1:nchar(a<-scan(,"")))v=c(v,paste0(" |",strsplit(a,"")[[1]][i],"|",l,collapse=""));cat("  |",l," /_\\",l,v," |_|",l,"/___\\",l," VvV",sep="")
```
**Ungolfed :**
```
v=c()     #Empty vector
l="\n"    #Line break
for(i in 1:nchar(a<-scan(,"")))                  #For the number of character of the input
    v=c(v, paste0(" |",strsplit(a,"")[[1]][i],"|","\n",collapse=""))
    #This part cut the input into its letters, paste each letter between `|`'s, 
    #and a line break
cat("  |",l," /_\\",l,v," |_|",l,"/___\\",l," VvV",sep="") #Puts everything in the STDOUT,
                                                           #with spaces where needed
```
I don't really like the fact I had to put some spaces in the last line, but hey !
[Answer]
## PowerShell v2+, ~~59~~ ~~55~~ 51 bytes
```
"  |
 /_\"
$args|% t*y|%{" |$_|"}
" |_|
/___\
 VvV"
```
[Try it online!](https://tio.run/##K8gvTy0qzkjNyfn/X0lBoYZLQT8@RolLJbEovbhGVaFEq7JGtVpJoUYlvkaplgvIiK/h0o@Pj4/hUggrC1P6D9TlnJGYk5Oal55apODpqQQA "PowerShell – Try It Online")
Abuses the default `Write-Output` at end of execution to stick a newline between each element, since these are all just literal strings on the pipeline. The only "tricky" bit is a loop through each element of the input `$args` as a char-array to get the body of the rocket.
*Uses literal newlines as pointed out by ConnorLSW to save some bytes.*  
*-4 more bytes thanks to Veskah.*
[Answer]
# PowerShell, 70 bytes
```
"  |`n /_\`n$(([char[]]$a|%{" |$_|"})-join("`n"))`n |_|`n/___\`n VvV 
```
Set $a to input.
If it has to take input other than a variable it can be piped in:
```
"Hello World"|%{"  |`n /_\`n$(([char[]]$_|%{" |$_|"})-join("`n"))`n |_|`n/___\`n VvV "}
```
Example:
```
  |
 /_\
 |H|
 |e|
 |l|
 |l|
 |o|
 | |
 |W|
 |o|
 |r|
 |l|
 |d|
 |_|
/___\
 VvV 
```
[Answer]
# Mathematica, 50 bytes
```
"  |
 /_\\
 |"<>(#<>"|
 |"&/@#)<>"_|
/___\\
 VvV"&
```
Anonymous function. Takes a list of characters as input and returns a string as output.
[Answer]
## PHP, ~~108~~ ~~100~~ 88 bytes
-8 bytes thanks to business cat
-12 bytes thanks to YetiCGN
```
echo'  | 
 /_\\
';foreach(str_split($argv[1])as$c){echo" |$c|
";}echo' |_|
/___\\
 VvV';
```
pretty straightforward
[Ideone](https://ideone.com/MSJymz)
[Answer]
## C#, ~~106~~ ~~97~~ ~~80~~ 74 bytes
```
s=>$@"  |
 /_\
 |{string.Join("|\n |",s.ToCharArray())}|
 |_|
/___\
 VvV";
```
I don't have C# 6 to try the above but I believe it will work
*Saved 7 bytes thanks to Kevin Cruijssen*
*Thanks to manatwork for pointing me in the right direction to save 17 bytes*
*Saved 6 bytes thanks to milk*
[Answer]
# C, ~~131~~, 121 bytes
```
#define P printf
main(){char s[99],*p=s;gets(s);P("  |\n /_\\\n");while(*p)P(" |%c|\n",*p++);P(" |_|\n/___\\\n VvV\n");}
```
[Answer]
# Jelly, ~~38~~ 37 bytes
```
;”_“|“|¶”jÐ€“  |¶“/_\¶”;K;“/___\¶ VvV
```
[Try it online!](http://jelly.tryitonline.net/#code=O-KAnV_igJx84oCcfMK24oCdasOQ4oKs4oCcICB8wrbigJwvX1zCtuKAnTtLO-KAnC9fX19cwrYgVnZW&input=&args=IkNvZGUgR29sZiI)
Same idea as with my Pyth answer, but this can probably be golfed.
[Answer]
# [05AB1E](http://github.com/Adriandmen/05AB1E), ~~50~~ ~~47~~ ~~43~~ 37 bytes
```
I'_J"  |
 /_\"svy" |ÿ|"}"/___\
 VvV"»
```
[Try it online!](http://05ab1e.tryitonline.net/#code=SSdfSiIgIHwKIC9fXCJzdnkiIHzDv3wifSIvX19fXAogVnZWIsK2w70&input=RWFydGg)
Saved 9 bytes thanks to Adnan.
[Answer]
# Kotlin, 68 bytes
```
{"""  |
 /_\${it.replace(Regex("."),"\n |\$0|")}
 |_|
/___\
 VvV"""}
```
Pretty straightforward. Uses multiline string and a regex replacement. This is a lambda with `(String)->String` type. Test:
```
fun main(args: Array<String>) {
    val function : (String)->String = {"""  |
 /_\${it.replace(Regex("."),"\n |\$0|")}
 |_|
/___\
 VvV"""}
    println(function(" _ _ "))
}
```
[Answer]
# Gema, 50 characters
```
\A=  |\n\ /_\\\n
?=\ |?|\n
\Z=\ |_|\n/___\\\n\ VvV
```
Sample run:
```
bash-4.3$ echo -n gema | gema '\A=  |\n\ /_\\\n;?=\ |?|\n;\Z=\ |_|\n/___\\\n\ VvV'
  |
 /_\
 |g|
 |e|
 |m|
 |a|
 |_|
/___\
 VvV
```
[Answer]
# BASH 84 70
Saved 14 thanks to manatwork
```
(cat&&echo _)|sed 's~.~ |&|\n~g;1s~^~  |\n /_\\\n~;$s~$~/___\\\n VvV~'
```
Over half of the bytes are for adding the nose, and engine.
[Answer]
# MATLAB, 94 bytes
```
@(s)char(['  |';' /_\';arrayfun(@(x)[' |' x '|'],s,'UniformOutput',0)';' |_|';'/___\';' VvV'])
```
Anonymous function
[Answer]
# GolfScript, ~~61~~ 51 bytes
My first code golf, I hope it is good enough.
```
"  |
 /_\\
"\1/.,{" |"\(\"|
"\}\*" |_|
/___\\
 VvV"
```
### Explanation
```
"  |\n /_\\\n"   # Push the rocket's head
\                # Swap the head with the user's string
1/               # The string is converted into an array
.,               # Push array length
{" |"\           # Push the rocket's body and swap
(\               # Array's first element cut out
"|\n"\           # Push rocket's body and swap
}\*              # Repeat for array length times
" |_|\n/___\\\n VvV" # Push rocket's bottom
```
[Try it online!](http://golfscript.tryitonline.net/#code=IiAgfAogL19cXAoiXDEvLix7IiB8IlwoXCJ8CiJcfVwqIiB8X3wKL19fX1xcCiBWdlYi&input=RWFydGg&args=)
[Answer]
# Vim, ~~41~~ 39 bytes
Here the `<End>` is literally the "End" key.
```
i <End>_:s/./ |&|\r/g
/___\
 VvVggxo /_\
```
Unprintables so:
```
i <End>_^O:s/./ |&|\r/g
/___\
 VvV^[ggxo /_\^[
```
[Answer]
# Lua, 83, 92 bytes
`function f(x)return' |\n /_\\\n'..x:gsub('(.)',' |%1|\n')..' |_|\n/___\\\n VvV'end`
```
print('  |\n /_\\\n'..(arg[1] and arg[1]:gsub('(.)',' |%1|\n') or '')..' |_|\n/___\\\n VvV')
```
]