Ce n'est pas sorcier

59

Ecrivez un programme ou une fonction prenant une chaîne d'une seule ligne. Vous pouvez supposer qu'il ne contient que de l' ASCII imprimable . Imprimer ou renvoyer une chaîne d'une fusée d'art ASCII telle que

  |
 /_\
 |E|
 |a|
 |r|
 |t|
 |h|
 |_|
/___\
 VvV

avec la chaîne d'entrée écrite de haut en bas sur le fuselage. Dans ce cas, l'entrée étaitEarth . La hauteur de la fusée (flammes comprises) correspond toujours à la longueur de la chaîne plus cinq.

Chaque ligne de la sortie peut avoir jusqu'à deux espaces de fin et il peut y avoir un seul retour à la ligne facultatif. Le code le plus court en octets gagne.

Plus d'exemples:

[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

Classement

Les passe-temps de Calvin
la source
1
Connexes . Il y en a peut-être d'autres qui sont assez proches pour que cela compte comme une dupe.
Peter Taylor
2
Espaces @Sefa oui. Non aux autres espaces. Comme l' indique le wiki lié .
Les passe-temps de Calvin le
6
D'oh, j'ai vu le titre et j'attendais quelque chose à propos de la chirurgie du cerveau. :(
17
Et si le bas pointe vers le ciel, vous n'irez pas dans l'espace aujourd'hui.
AstroDan
4
"Cela a fonctionné dans le programme spatial Kerbal ..."
Urne Octopus Magique

Réponses:

55

Excel VBA, 142 179 175 160 155 octets

Instruction:

Définissez la feuille de calcul d'Excel où la cellule A1 est entrée et la colonne C comme sortie. Définissez l'alignement du texte dans la colonne C au centre . Écrivez et exécutez le code suivant dans la fenêtre Immédiate:

[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 le 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

Sortie:

enter image description here

Remarque: la police et la couleur ne sont qu'un choix personnel.


15 octets sauvés grâce à la suggestion de edc65. Merci.

5 octets sauvés en raison de la suggestion de TaylorScott. Merci.

Anastasiya-Romanova
la source
Économisez 15 octets ajoutant "_"à T. Comme ceci[C1]="|":[C2]="/_\":T=[A1]&" ":For i=1To Len(T):Cells(i+2,3)="|"&Mid(T,i,1)&"|":Next:Cells(i+2,3)="/__\":Cells(i+4,3)="VvV":Columns(3).HorizontalAlignment=-4108
edc65
(ok il y a une erreur dans mon code et il est trop tard pour l'éditer. Mais vous voyez l'idée)
edc65
@ edc65 Je ne comprends pas l'idée. Votre code est exactement le même avec le mien alors que dois-je éditer pour économiser 15 octets?
Anastasiya-Romanova
1
154 octets:[C:C].HorizontalAlignment=-4108:[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
Taylor Scott
1
Ou vous pouvez le réduire à 151 octets, en gardant l'aspect centré[C:C].HorizontalAlignment=3:[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
Taylor Scott
30

Perl 6, 75 octets

"  |\n /_\\".say;" |$_|".say for slurp.chomp.comb;" |_|\n/___\\\n VvV".say;
bb94
la source
101
slurp.chomp.comb... Perl est bizarre.
Mego
14
SLURP!!! CHOMP !!! PEIGNE!! Voici le monstre Perl!
Stommestack
Notez qu’en utilisant une fonction et une concatanation vous pouvez couper beaucoup: {[~] " |\n /_\\\n",|(" |$_|\n"for $_.comb)," |_|\n/___\\\n VvV"}65 octets
user0721090601
Mais vous pouvez aller encore plus bas en empruntant aux JS: tio.run/…
user0721090601
22

JavaScript (ES6), 54

Simple

x=>`  |
 /_\\
 |${[...x+'_'].join`|
 |`}|
/___\\
 VvV`

Tester

f=x=>`  |
 /_\\
 |${[...x+'_'].join`|
 |`}|
/___\\
 VvV`

function update() {
  O.textContent=f(I.value)
}

update()
<input id=I value='hello' oninput='update()'><pre id=O></pre>

edc65
la source
16

En fait, 40 octets

"/___\
 VvV",'_o"|
 |"j'|o" |"+"  |
 /_\

Oui, ces nouvelles lignes sont supposées être là.

Essayez-le en ligne!

Explication:

Les nouvelles lignes sont représentées par \npour faciliter le formatage

"/___\\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
Mego
la source
12
Votre programme ressemble terriblement à une fusée explosée.
CorsiKa
15

C, 83 , 82 octets

F(char*c){for(puts("  |\n /_\\");*c;printf(" |%c|\n",*c++));puts(" |_|\n/___\\\n VvV");}

Test principal:

int main() {
  F("");
  F("a");
  F("|0");
  F("\\/\\");
  F(" _ _ ");
  F("    ");
  F("SPACEY");
}
Stefano Sanfilippo
la source
7
J'ai élaboré ma propre solution C, et il s’est avéré que c’est exactement le vôtre, caractère par caractère. +1 de moi.
Cody
Sur le téléphone et trop paresseux pour SSH, cela n’a donc pas été testé, mais devrait fonctionner. Enregistre 2 octets (si j'ai correctement compté):F(char*c){for(puts(" |\n /_\\");*c;printf(" |%c|\n",*c++),puts(" |_|\n/___\\\n VvV");}
algmyr
En fait, @algmyr enregistre un octet, car le dernier putsne doit être exécuté qu'une seule fois, pas après chaque printf. Mais oui, 1 octet enregistré, yay!
Stefano Sanfilippo
Droite. Je vais blâmer cela au golf alors que j'aurais dû dormir.
Algmyr
N'est-ce pas 88 octets?
gastropner
10

Python 2, 93 66 62 61 octets

Une FGITW. Peut probablement être fortement joué au golf. Suggestions bienvenues.

Modifier: 27 octets grâce à Mego. 4 octets grâce à TheBikingViking. 1 octet grâce à user3030010.

Essayez-le en ligne!

lambda x:r"""  |
 /_\
 |%s|
/___\
 VvV"""%"|\n |".join(x+"_")
Sherlock9
la source
9

PHP, 73 72 69 62 octets

  |
 /_\
 |<?=join('|
 |',str_split($argv[1]._))?>|
/___\
 VvV

Prend la chaîne à imprimer sur le fuselage en tant que premier argument de la ligne de commande lorsque le script est appelé.

Améliorations:

  1. Sauvegardé un octet en remplaçant \ n par une vraie nouvelle ligne LF dans le premier argument de join.
  2. Sauvegardé de trois octets supplémentaires en ajoutant la base de fusée avec un seul soulignement à l'entrée
  3. Grâce à Ismael Miguel : économisez 7 octets supplémentaires en tirant parti du fait que PHP était auparavant le "préprocesseur hypertexte" afin que vous puissiez générer autant de texte que vous le souhaitez et démarrer le code quelque part au milieu.

Essayez-le en ligne!

C'était amusant! :-)

Exemples d'appels:

php rocket.php ""
php rocket.php EARTH
php rocket.php "This is a very long rocket"
YetiCGN
la source
62 octets: sandbox.onlinephpfunctions.com/code/…
Ismael Miguel
Beau golf! J'ai totalement oublié cette possibilité. Je vous remercie!
YetiCGN
Je vous en prie. En outre, j'ai enregistré 2 octets sur la première ligne. Vous avez eu 2 espaces de fuite supplémentaires dessus. C'était quelque chose que je ne m'attendais pas à trouver, je dois dire.
Ismael Miguel
1
Je sais, c'était vraiment idiot mais aussi très difficile à repérer. J'ai seulement remarqué une fois que j'ai trouvé 64 octets sur votre version améliorée et que je devais savoir pourquoi.
YetiCGN
8

brainfuck , 179 octets

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

Essayez-le en ligne!

Fuite Nun
la source
@ user00001 Cette phrase est utilisée par tous les musulmans du monde entier, pas seulement par les terroristes. Pensez-vous vraiment que les terroristes représentent tous les musulmans?
Leaky Nun
8

Ruby, 57 55 octets

-2 octets par @ValueInk
-5 octets en supposant qu'il n'y a pas de nouvelle ligne dans l'entrée, comme suggéré par @manatwork. Une entrée sans nouvelle ligne peut être fournie par exemple avec echo -n, comme echo -n hey | ruby rocket.rb.

puts'  |
 /_\
 |'+gets.chars*'|
 |'+'|
 |_|
/___\
 VvV'
Ancienne version, suppose que la nouvelle ligne est entrée:

Ruby, 62 60 octets

puts'  |
 /_\
 |'+gets.chop.chars*'|
 |'+'|
 |_|
/___\
 VvV'
Daniero
la source
Selon le commentaire du propriétaire de la question, l'entrée ne contiendra pas de caractère de nouvelle ligne, vous pouvez donc la supprimer .chop.
manatwork
@manatwork soignée, merci :)
daniero
Si vous utilisez des chaînes de guillemets simples, vous devriez pouvoir remplacer les deux \\ par \ . (Dans les chaînes entre guillemets simples, les caractères ne sont pas échappés, sauf pour \'.
Valeur Encre
7

Haskell, 58 octets

f s="  |\n /_\\\n |"++((:"|\n |")=<<s)++"_|\n/___\\\n VvV"
Xnor
la source
7

Retina , 44 37 octets

7 octets grâce à Martin Ender.

$
_
.
¶ |$0|
$
¶/___\¶ VvV
^
  |¶ /_\

Essayez-le en ligne!

Fuite Nun
la source
une
marge en bas à droite
@xQbert fonctionne pour moi, pouvez-vous joindre un lien TIO?
Leaky Nun
bizarre, ça marche très bien pour moi maintenant ... ah mon erreur a eu une nouvelle ligne à la fin.
xQbert
Retina est la seule langue que je connaisse qui, en ajoutant une nouvelle ligne, peut complètement changer le programme.
Caird coinheringaahing
6

Gelée , 37 36 octets

;”_⁾ |;ЀŒB;“/___\“ VvV”“  |“ /_\”;Y

Même score qu'une entrée existante, mais utilise une nouvelle fonctionnalité amusante: ŒBla version vectorisée de ŒḄBounce. Le rebondissement parcourt une liste à la fin puis en arrière, x[:-1]+x[::-1]par exemple:bounce("codegolf") == "codegolflogedoc" .

-1 octet grâce à Dennis (utilisez la version vectorisée de bounce)

Comment?

;”_⁾ |;ЀŒ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

Testez-le sur TryItOnline

Jonathan Allan
la source
2
ŒBest l'abréviation de ŒḄ€.
Dennis
6

Pyke , 40 37 35 octets

(Mis à jour pour fonctionner avec la dernière version)

\_+2" ||
"m:"/___\
 VvV"+R"  |
 /_\

Essayez-le ici!

Bleu
la source
5

V , 41, 39 octets

ys$_òlé
òÎá|I |
Hr/$r\YO  |GpX2á_o VvV

Essayez-le en ligne!

Notez que pour une raison quelconque, l'interprète en ligne produisait des résultats inattendus, j'ai donc poussé une version de débogage vers l'interpréteur en ligne qui s'exécute beaucoup plus lentement. Il devrait produire les bons résultats maintenant.

Puisque ce programme contient des caractères non imprimables, voici un 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
DJMcMayhem
la source
Sympa mais ça ne gère pas les espaces dans "L'espace, la dernière frontière", c'est vrai.
xQbert
5

R, 163 octets

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

Je n'aime pas vraiment le fait que j'ai dû mettre des espaces dans la dernière ligne, mais bon!

Frédéric
la source
5

PowerShell v2 +, 59 55 51 octets

"  |
 /_\"
$args|% t*y|%{" |$_|"}
" |_|
/___\
 VvV"

Essayez-le en ligne!

Abuse la valeur par défaut Write-Outputen fin d’exécution pour coller une nouvelle ligne entre chaque élément, car ce ne sont que des chaînes littérales sur le pipeline. Le seul bit "difficile" est une boucle passant par chaque élément de l'entrée $argssous forme de tableau de caractères pour obtenir le corps de la fusée.

Utilise les nouvelles lignes littérales, comme l'a souligné ConnorLSW, pour économiser des octets.
-4 plus d'octets grâce à Veskah.

AdmBorkBork
la source
vous pouvez mettre de nouvelles lignes dans la chaîne pour économiser 3; le shell et ise s'exécutent \r
correctement
4

PowerShell, 70 octets

"  |`n /_\`n$(([char[]]$a|%{" |$_|"})-join("`n"))`n |_|`n/___\`n VvV 

Définissez $ a à entrer.

S'il doit prendre une entrée autre qu'une variable, il peut être connecté:

"Hello World"|%{"  |`n /_\`n$(([char[]]$_|%{" |$_|"})-join("`n"))`n |_|`n/___\`n VvV "}

Exemple:

  |
 /_\
 |H|
 |e|
 |l|
 |l|
 |o|
 | |
 |W|
 |o|
 |r|
 |l|
 |d|
 |_|
/___\
 VvV 
Chirishman
la source
4

Mathematica, 50 octets

"  |
 /_\\
 |"<>(#<>"|
 |"&/@#)<>"_|
/___\\
 VvV"&

Fonction anonyme. Prend une liste de caractères en entrée et retourne une chaîne en sortie.

LegionMammal978
la source
4

PHP, 108 100 88 octets

-8 octets grâce au chat d'affaires

-12 octets grâce à YetiCGN

echo'  | 
 /_\\
';foreach(str_split($argv[1])as$c){echo" |$c|
";}echo' |_|
/___\\
 VvV';

assez simple

Ideone

Sefa
la source
1
Vous pouvez économiser beaucoup d'octets en utilisant à la foreach(str_split($a)as$c)place de l'autre pour la boucle. En outre, vous pouvez mettre le $ c directement dans la chaîne si vous utilisez des guillemets doubles:echo" |$c| ....";
Business Cat
@ BusinessCat C'est vrai, merci les doubles guillemets ne fonctionnaient pas avec le style de tableau pensé à cause des crochets non interprétés
Sefa
Qu'en est-il de l'expression régulière? function f($a){echo' |.␤ /_\\␤',preg_replace('/./',' |$0|␤',$a),' |_|␤/___\\␤ VvV';}
manatwork
1
Pourquoi même mettre une fonction autour de lui? Remplacer $aavec $argv[1]et exécuter à partir de la ligne de commande le rend beaucoup plus court.
YetiCGN
@manatwork C'est probablement une alternative valable, mais comme je ne le comprends pas et que ce n'est pas dans le même esprit que le mien, je vous laisserai le poster.
Sefa
4

C #, 106 97 80 74 octets

s=>$@"  |
 /_\
 |{string.Join("|\n |",s.ToCharArray())}|
 |_|
/___\
 VvV";

Je n'ai pas le C # 6 pour essayer ce qui précède mais je crois que cela fonctionnera

7 octets sauvés grâce à Kevin Cruijssen

Merci à manatwork de m'avoir dirigé dans la bonne direction pour économiser 17 octets

Économisé 6 octets grâce au lait

TheLethalCoder
la source
+1 Au fait, les espaces blancs de fin sont optionnels, vous pouvez donc les remplacer par: using System.Linq;s=>$(" |\n /_\\\n{string.Join("",s.Select(c=>" |"+c+"|\n"))} |_|\n/___\\\n VvV");( 100 octets )
Kevin Cruijssen
1
@KevinCruijssen J'étais juste en train de mettre à jour ceci après vos commentaires à ma réponse précédente :) Merci pour l'aide
TheLethalCoder
Vous pouvez enregistrer certains caractères en utilisant un seul littéral de chaîne à l'intérieur Select: " |"+c+"|\n"c+"|\n |"avec le déplacement du `|` après après {}.
manatwork
@manatwork Je n'arrive pas à faire en sorte que ça fonctionne
TheLethalCoder
1
La nouvelle ligne correspond à 1 octet par rapport à \n2 octets. Vous économiserez donc 5 octets supplémentaires en les remplaçant par de nouvelles lignes. Oui, si vous utilisez Visual Studio, les nouvelles lignes auront par défaut une longueur de 2 octets, mais vous pouvez ouvrir le fichier source dans un éditeur hexadécimal (Visual Studio en a un) et supprimer les caractères de retour chariot. La sortie sera toujours la même.
lait
4

C,  131  , 121 octets

#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");}
RosLuP
la source
Vous pouvez supprimer trois caractères en déplaçant p=sdans l'initialisation et à l' aide à l' pintérieur scanf:main(){char s[99],*p=s;scanf("%s",p);P(" |\n /_\\\n");while(*p)P(" |%c|\n",*p++);P(" |_|\n/___\\\n VvV\n");}
Quentin
ok .... je ne sais pas pourquoi "scanf ("% s ", & s)" au lieu de "scanf ("% s ", s)" affiche à la fin le résultat correct ... à la fin car scanf ne reçoit pas espaces que je préfère, le danger devient () ...
RosLuP
2
S'il vous plaît ne vandalisez pas vos messages. Je vous remercie!
NobodyNada
3

Gelée, 38 37 octets

;”_“|“|¶”jЀ“  |¶“/_\¶”;K;“/___\¶ VvV

Essayez-le en ligne!

Même idée qu'avec ma réponse Pyth, mais cela peut probablement être joué au golf.

PurkkaKoodari
la source
3

05AB1E , 50 47 43 37 octets

I'_J"  |
 /_\"svy" |ÿ|"}"/___\
 VvV"»

Essayez-le en ligne!

Sauvegardé 9 octets grâce à Adnan.

Emigna
la source
String peut également accepter les nouvelles lignes dans 05AB1E: p, comme ceci .
Adnan
@Adnan Nice, merci! Une idée sur la façon de mieux contourner l'entrée vide?
Emigna
Je pensais à une approche avec IðJau début du programme, qui comprend également la base du fuselage.
Adnan
@Adnan Excellente idée. J'ai essayé avec «plus tôt sans trop de chance. C'est beaucoup mieux cependant.
Emigna
Supprimer Uet remplacer Xpar senregistre également un octet :).
Adnan
3

Kotlin, 68 octets

{"""  |
 /_\${it.replace(Regex("."),"\n |\$0|")}
 |_|
/___\
 VvV"""}

Assez simple. Utilise une chaîne multiligne et un remplacement de regex. C'est un lambda avec le (String)->Stringtype. Tester:

fun main(args: Array<String>) {
    val function : (String)->String = {"""  |
 /_\${it.replace(Regex("."),"\n |\$0|")}
 |_|
/___\
 VvV"""}
    println(function(" _ _ "))
}
JustACluelessNewbie
la source
3

Gema, 50 caractères

\A=  |\n\ /_\\\n
?=\ |?|\n
\Z=\ |_|\n/___\\\n\ VvV

Échantillon échantillon:

bash-4.3$ echo -n gema | gema '\A=  |\n\ /_\\\n;?=\ |?|\n;\Z=\ |_|\n/___\\\n\ VvV'
  |
 /_\
 |g|
 |e|
 |m|
 |a|
 |_|
/___\
 VvV
homme au travail
la source
3
Je pense que vous
manquez
Aie. Dumb miss. Merci @TheLethalCoder.
manatwork
1
+1 pour me présenter à une nouvelle langue (pour moi) (non-golfeuse).
Jordanie
3

FRAPPER 84 70

14 sauvés grâce à manatwork

(cat&&echo _)|sed 's~.~ |&|\n~g;1s~^~  |\n /_\\\n~;$s~$~/___\\\n VvV~'

Plus de la moitié des octets servent à ajouter le nez et le moteur.

Riley
la source
Pourquoi grep? (cat&&echo _)|sed 's~.~ |&|\n~g;1s~^~ |\n /_\\\n~;$s~$~/___\\\n VvV~'. En fait, je ne vois aucune raison d'utiliser catet echonon plus. Serait plus court transformé en sedsolution pure .
manatwork
Avec pure sed, vous n’obtenez aucune sortie si vous n’avez pas d’entrée
Riley
Doh. Tu as raison. Désolé, j'ai oublié cette partie de l'exigence.
manatwork
@manatwork je l'ai oublié lors de mon premier essai aussi.
Riley
Pour référence ultérieure, évitez d’utiliser des balises <pre> <code>. Utilisez 4 espaces avant le code dans le futur, car cela échappe automatiquement au formatage de Markdown. J'ai maintenu la mise en forme actuelle en raison du barré, mais vous pouvez également laisser cette information dans l'historique des modifications pour les curieux.
Addison Crump
3

GolfScript, 61 51 octets

Mon premier code golf, j'espère que c'est assez bon.

"  |
 /_\\
"\1/.,{" |"\(\"|
"\}\*" |_|
/___\\
 VvV"

Explication

"  |\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

Essayez-le en ligne!

FedeWar
la source
3

Vim, 41 39 octets

Ici, <End>c'est littéralement la touche "Fin".

i <End>_:s/./ |&|\r/g
/___\
 VvVggxo /_\

Unprintables donc:

i <End>_^O:s/./ |&|\r/g
/___\
 VvV^[ggxo /_\^[
nmjcman101
la source
3

GNU sed , 54 49 48 bytes

Ce fut ma première réponse à un défi sur ce site. La solution est simple, principalement l’impression. J’ai donc passé un certain temps à faire en sorte qu’il ne puisse plus être joué au golf.

s:.:\n |&|:g
s::  |& /_\\&:
a\ |_|\n/___\\\n VvV

Essayez-le en ligne!

Un an et demi plus tard, j'ai réécrit le script, utilisé un truc pour faire bonne mesure et je l'ai joué au jeu de moins d'un octet. Maintenant c'est des progrès!

Explication: l'espace de modèle à chaque étape est mentionné pour plus de clarté, étant donné l'exemple d'entrée "GO"

s:.:\n |&|:g
   # turn each input char into a section of the rocket (\n |G|\n |O|)
s::  |& /_\\&:
   # 's::' is a trick; the search part is actually the one from the previous 's'
   #command, i.e. a char. Only the first char, '\n', the modifier 'g' is not
   #inherited. The replace part is the head of the rocket. (  |\n /_\\n |G|\n |O|)
a\ |_|\n/___\\\n VvV
   # append the tail of the rocket, plus implicit printing at the end

  |
 /_\
 |G|
 |O|
 |_|
/___\
 VvV
seshoumara
la source
3

Lua, 83 , 92 octets

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')
Nolan
la source
Si je n’ajoute aucune contribution à votre réponse. Ça ne marche pas.
nolan