Esto no es ciencia espacial

59

Escriba un programa o función que tome una cadena de una sola línea. Puede suponer que solo contiene ASCII imprimible . Imprima o devuelva una cadena de un cohete de arte ASCII como

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

con la cadena de entrada escrita de arriba a abajo en el fuselaje. En este caso la entrada fue Earth. La altura del cohete (incluidas las llamas) es siempre la longitud de la cuerda más cinco.

Cada línea en la salida puede tener hasta dos espacios finales y puede haber una nueva línea final opcional. El código más corto en bytes gana.

Más ejemplos:

[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

Tabla de clasificación

Pasatiempos de Calvin
fuente
1
Relacionados . Puede haber otros que estén lo suficientemente cerca como para que esto cuente como un engañado.
Peter Taylor
2
@Sefa Spaces sí. No a otros espacios en blanco. Como lo indica el wiki vinculado .
Aficiones de Calvin
66
Oh, vi el título y esperaba algo sobre cirugía cerebral. :(
17
Y si el fondo apunta al cielo, hoy no irás al espacio.
AstroDan
44
"Funcionó en el programa espacial Kerbal ..."
Urna de pulpo mágico

Respuestas:

55

Excel VBA, 142 179 175 160 155 bytes

Instrucción:

Establezca la hoja de trabajo de Excel donde se ingresa la celda A1 y la columna C como salida. Establezca la alineación del texto en la columna C al centro . Escriba y ejecute el siguiente código en la ventana Inmediato:

[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 el código:

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

Salida:

ingrese la descripción de la imagen aquí

Nota: La fuente y el color son solo una elección personal.


15 bytes guardados debido a la sugerencia de edc65. Gracias.

5 bytes guardados debido a la sugerencia de TaylorScott. Gracias.

Anastasiya-Romanova 秀
fuente
Ahorre 15 bytes agregando "_"a T. Como esto[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, hay un error en mi código y es demasiado tarde para editarlo. Pero ya entiendes la idea)
edc65
@ edc65 No entiendo la idea. Su código es exactamente el mismo que el mío, ¿qué debo editar para guardar 15 bytes?
Anastasiya-Romanova 秀
1
154 Bytes:[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
O podría reducirlo a 151 bytes, manteniendo el aspecto central[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 bytes

"  |\n /_\\".say;" |$_|".say for slurp.chomp.comb;" |_|\n/___\\\n VvV".say;
bb94
fuente
101
slurp.chomp.comb... Perl es raro.
Mego
14
¡¡¡SORBER!!! CHOMP !!! ¡¡PEINE!! ¡Aquí viene el monstruo Perl!
stommestack
Tenga en cuenta que al usar una función y una concatenación puede recortar mucho: {[~] " |\n /_\\\n",|(" |$_|\n"for $_.comb)," |_|\n/___\\\n VvV"}65 bytes
user0721090601
Pero puede ir aún más bajo tomando prestado de JS: tio.run/…
user0721090601
22

JavaScript (ES6), 54

Sencillo

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

Prueba

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
fuente
16

En realidad, 40 bytes

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

Sí, se supone que esas nuevas líneas estarán allí.

Pruébalo en línea!

Explicación:

Las nuevas líneas están representadas por \npara facilitar el formateo

"/___\\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
fuente
12
Su programa se ve deprimentemente similar a un cohete explotado.
corsiKa
15

C, 83 , 82 bytes

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

Prueba principal:

int main() {
  F("");
  F("a");
  F("|0");
  F("\\/\\");
  F(" _ _ ");
  F("    ");
  F("SPACEY");
}
Stefano Sanfilippo
fuente
77
Desarrollé mi propia solución C, y resultó ser exactamente tuya, personaje por personaje. +1 de mi parte
Cody
En el teléfono y demasiado vago para SSH, por lo que esto no se ha probado, pero debería funcionar. Guarda 2 bytes (si he contado correctamente):F(char*c){for(puts(" |\n /_\\");*c;printf(" |%c|\n",*c++),puts(" |_|\n/___\\\n VvV");}
algmyr
@algmyr guarda un byte, en realidad, porque el último putsdebe ejecutarse solo una vez, no después de cada uno printf. Pero sí, 1 byte guardado, ¡sí!
Stefano Sanfilippo
Derecha. Le echaré la culpa al golf cuando debería haber estado durmiendo.
algmyr
¿No es esto 88 bytes?
Gastropner
10

Python 2, 93 66 62 61 bytes

A FGITW. Probablemente se puede jugar mucho golf. Sugerencias bienvenidas.

Editar: 27 bytes gracias a Mego. 4 bytes gracias a TheBikingViking. 1 byte gracias a user3030010.

¡Pruébelo en línea!

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

PHP, 73 72 69 62 bytes

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

Toma la cadena para imprimir en el fuselaje como el primer argumento de la línea de comando cuando se llama al script.

Mejoras:

  1. Se guardó un byte reemplazando \ n con una nueva línea LF real en el primer argumento de join.
  2. Ahorró tres bytes más al agregar la base del cohete con un solo guión bajo a la entrada
  3. Gracias a Ismael Miguel : ahorró 7 bytes más al aprovechar el hecho de que PHP solía ser el "preprocesador de hipertexto" para que pueda generar la mayor cantidad de texto que desee e iniciar el código en algún punto intermedio.

Pruébalo en línea!

¡Esto fue divertido! :-)

Llamadas de muestra:

php rocket.php ""
php rocket.php EARTH
php rocket.php "This is a very long rocket"
YetiCGN
fuente
62 bytes: sandbox.onlinephpfunctions.com/code/…
Ismael Miguel
Buen golf! Olvidé por completo esa posibilidad. ¡Gracias!
YetiCGN
De nada. Además, guardé 2 bytes en la primera línea. Tenías 2 espacios finales adicionales en él. Debo decir que era algo que no esperaba encontrar.
Ismael Miguel
1
Lo sé, eso fue realmente tonto pero también muy difícil de detectar. Solo me di cuenta una vez que encontré 64 bytes en tu versión mejorada y tuve que averiguar por qué.
YetiCGN
8

brainfuck , 179 bytes

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

Pruébalo en línea!

Monja permeable
fuente
@ user00001 Esta frase es utilizada por todos los musulmanes en todo el mundo, no solo el terrorista. ¿De verdad crees que los terroristas representan a todos los musulmanes?
Leaky Nun
8

Ruby, 57 55 bytes

-2 bytes por @ValueInk
-5 bytes asumiendo que no hay una nueva línea en la entrada, como lo sugiere @manatwork. La entrada sin línea nueva se puede proporcionar, por ejemplo echo -n, con like echo -n hey | ruby rocket.rb.

puts'  |
 /_\
 |'+gets.chars*'|
 |'+'|
 |_|
/___\
 VvV'
Versión anterior, supone nueva línea en la entrada:

Ruby, 62 60 bytes

puts'  |
 /_\
 |'+gets.chop.chars*'|
 |'+'|
 |_|
/___\
 VvV'
daniero
fuente
Según el comentario del propietario de la pregunta, la entrada no contendrá el carácter de nueva línea, por lo que puede eliminarla .chop.
manatwork
@manatwork ordenado, gracias :)
daniero
Si utiliza cadenas de comillas simples, debería poder reemplazar ambas \\ por \ . (En las cadenas entre comillas simples, los caracteres no se escapan, excepto \'.
Value Ink
7

Haskell, 58 bytes

f s="  |\n /_\\\n |"++((:"|\n |")=<<s)++"_|\n/___\\\n VvV"
xnor
fuente
7

Retina , 44 37 bytes

7 bytes gracias a Martin Ender.

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

Pruébalo en línea!

Monja permeable
fuente
deja un espacio en una fila en la parte inferior :( para "Espacio, la frontera final".
xQbert
@xQbert funciona para mí, ¿puedes adjuntar un enlace TIO?
Leaky Nun
extraño, funciona bien para mí ahora ... ah mi error tenía una nueva línea al final.
xQbert
Retina es el único idioma que sé que agregar una nueva línea final puede cambiar completamente el programa.
caird coinheringaahing
6

Jalea , 37 36 bytes

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

El mismo puntaje que la entrada existente, pero utiliza una nueva característica divertida ŒB, la versión vectorizada de ŒḄ, conocida como rebote. Rebote se está ejecutando a través de una lista a su fin y luego de nuevo x[:-1]+x[::-1]por ejemplo: bounce("codegolf") == "codegolflogedoc".

-1 byte gracias a Dennis (usa la versión vectorizada de bounce)

¿Cómo?

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

Pruébelo en TryItOnline

Jonathan Allan
fuente
2
ŒBes la abreviatura de ŒḄ€.
Dennis
6

Pyke , 40 37 35 bytes

(Actualizado para trabajar con la última versión)

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

Pruébalo aquí!

Azul
fuente
5

V , 41, 39 bytes

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

Pruébalo en línea!

Tenga en cuenta que, por alguna razón, el intérprete en línea estaba produciendo resultados inesperados, por lo que introduje una versión de depuración en el intérprete en línea que funciona mucho más lento. Debería producir los resultados correctos ahora.

Dado que este programa contiene caracteres no imprimibles, aquí hay 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
fuente
Agradable, pero no maneja los espacios en "Espacio, la frontera final" del todo bien.
xQbert
5

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="")

Sin golf:

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

Realmente no me gusta el hecho de que tuve que poner algunos espacios en la última línea, pero ¡oye!

Frédéric
fuente
5

PowerShell v2 +, 59 55 51 bytes

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

Pruébalo en línea!

Abusa del valor predeterminado Write-Outputal final de la ejecución para pegar una nueva línea entre cada elemento, ya que estas son solo cadenas literales en la tubería. El único bit "complicado" es un bucle a través de cada elemento de la entrada $argscomo una matriz de caracteres para obtener el cuerpo del cohete.

Utiliza nuevas líneas literales como señala ConnorLSW para guardar algunos bytes.
-4 bytes más gracias a Veskah.

AdmBorkBork
fuente
puede poner nuevas líneas reales en la cadena para guardar 3, el shell y el ISE se ejecutan bien sin el\r
colsw
4

PowerShell, 70 bytes

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

Establezca $ a como entrada.

Si tiene que tomar una entrada que no sea una variable, se puede canalizar:

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

Ejemplo:

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

Mathematica, 50 bytes

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

Función anónima. Toma una lista de caracteres como entrada y devuelve una cadena como salida.

LegionMammal978
fuente
4

PHP, 108 100 88 bytes

-8 bytes gracias a business cat

-12 bytes gracias a YetiCGN

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

muy claro

Ideona

Sefa
fuente
1
Puede guardar muchos bytes utilizando en foreach(str_split($a)as$c)lugar del otro para el bucle. Además, podría poner los $ c directamente en la cadena si usa comillas dobles:echo" |$c| ....";
Business Cat
@BusinessCat Es cierto, gracias a que las comillas dobles no funcionaban con el estilo de matriz pensado debido a que los corchetes no se interpretaban
Sefa
¿Qué pasa con la expresión regular? function f($a){echo' |.␤ /_\\␤',preg_replace('/./',' |$0|␤',$a),' |_|␤/___\\␤ VvV';}
manatwork
1
¿Por qué incluso poner una función a su alrededor? Sustitución $ade $argv[1]funcionamiento de la línea de comandos hace que sea mucho más corto.
YetiCGN
@manatwork Probablemente sea una alternativa válida, pero como no lo entiendo y no tiene el mismo espíritu que el mío, te dejaré publicarlo.
Sefa
4

C #, 106 97 80 74 bytes

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

No tengo C # 6 para probar lo anterior, pero creo que funcionará

Guardado 7 bytes gracias a Kevin Cruijssen

Gracias a manatwork por señalarme en la dirección correcta para ahorrar 17 bytes.

Guardado 6 bytes gracias a la leche

TheLethalCoder
fuente
+1. Por cierto, los espacios en blanco finales son opcionales, por lo que puede cambiarlo a: using System.Linq;s=>$(" |\n /_\\\n{string.Join("",s.Select(c=>" |"+c+"|\n"))} |_|\n/___\\\n VvV");( 100 bytes )
Kevin Cruijssen
1
@KevinCruijssen Estaba en el proceso de actualizar esto después de sus comentarios a mi respuesta anterior :) Gracias por la ayuda
TheLethalCoder
Puede guardar algunos caracteres mediante el uso de un único literal de cadena en el interior Select: " |"+c+"|\n"c+"|\n |"junto con mover el `|` de después de {}él.
manatwork
@manatwork Parece que no puedo hacer que eso funcione
TheLethalCoder
1
La nueva línea es de 1 byte en comparación con \nlos 2 bytes de '. Por lo tanto, ahorrará 5 bytes más al reemplazarlos con nuevas líneas. Sí, si está utilizando Visual Studio, las líneas nuevas por defecto serán de 2 bytes, pero puede abrir el archivo fuente en un editor hexadecimal (Visual Studio tiene uno) y eliminar los caracteres de retorno de carro. La salida seguirá siendo la misma.
leche
4

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");}
RosLuP
fuente
Puede eliminar tres caracteres moviéndose p=sa la inicialización y usando el pinterior 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 .... no sé por qué "scanf ("% s ", & s)" en lugar de "scanf ("% s ", s)" imprime al final el resultado correcto ... al final porque scanf no obtiene espacios que prefiero el peligro se pone () ...
RosLuP
2
Por favor, no destroces tus publicaciones. ¡Gracias!
NobodyNada
3

Jalea, 38 37 bytes

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

Pruébalo en línea!

La misma idea que con mi respuesta de Pyth, pero esto probablemente se pueda jugar al golf.

PurkkaKoodari
fuente
3

05AB1E , 50 47 43 37 bytes

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

Pruébalo en línea!

Guardado 9 bytes gracias a Adnan.

Emigna
fuente
Cadena también puede aceptar nuevas líneas en 05AB1E: P, como este .
Adnan
@Adnan Nice, gracias! ¿Alguna idea de cómo moverse mejor por la entrada vacía?
Emigna
Estaba pensando en un enfoque IðJal comienzo del programa, que también incluye la base del fuselaje.
Adnan
@Adnan Gran idea. Lo intenté «antes sin mucha suerte. Sin embargo, esto es mucho mejor.
Emigna
Eliminar Uy reemplazar Xcon stambién guarda un byte :).
Adnan
3

Kotlin, 68 bytes

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

Muy claro. Utiliza una cadena multilínea y un reemplazo de expresiones regulares. Esta es una lambda con (String)->Stringtipo. Prueba:

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

Gema, 50 personajes

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

Ejecución de muestra:

bash-4.3$ echo -n gema | gema '\A=  |\n\ /_\\\n;?=\ |?|\n;\Z=\ |_|\n/___\\\n\ VvV'
  |
 /_\
 |g|
 |e|
 |m|
 |a|
 |_|
/___\
 VvV
hombre trabajando
fuente
3
Te estás perdiendo el `| _ |` antes de la base del cohete, creo
TheLethalCoder
Ay. Tonta señorita. Gracias @TheLethalCoder.
manatwork
1
+1 por presentarme un nuevo lenguaje (para mí) (no golf).
Jordania
3

BASH 84 70

Guardado 14 gracias a manatwork

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

Más de la mitad de los bytes son para agregar la nariz y el motor.

Riley
fuente
¿Por qué el grep? (cat&&echo _)|sed 's~.~ |&|\n~g;1s~^~ |\n /_\\\n~;$s~$~/___\\\n VvV~'. En realidad no veo ninguna razón para usar caty echotampoco. Sería más corto transformado en sedsolución pura .
manatwork
Con sed puro, no obtienes ningún resultado si no tienes entrada
Riley
Doh Tienes razón. Lo siento, olvidé esa parte del requisito.
manatwork
@manatwork También lo olvidé en mi primer intento.
Riley
Para referencia futura, evite usar etiquetas <pre> <code>. Use 4 espacios que preceden al código en el futuro, ya que esto escapa automáticamente al formato Markdown. He mantenido el formato actual debido al tachado, pero también puede dejarlo en el historial de edición para que los curiosos lo vean.
Addison Crump
3

GolfScript, 61 51 bytes

Mi primer código de golf, espero que sea lo suficientemente bueno.

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

Explicación

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

Pruébalo en línea!

FedeWar
fuente
3

Vim, 41 39 bytes

Aquí la <End>es literalmente la tecla "Fin".

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

No imprimibles, entonces:

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

GNU sed , 54 49 48 bytes

Esta fue mi primera respuesta a un desafío en este sitio. La solución es simple, principalmente la impresión, por lo que pasé un tiempo asegurándome de que ya no se pueda jugar al golf.

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

Pruébalo en línea!

Avance rápido medio año después, reescribí el guión, usé un truco como medida y lo reduje a 1 byte más corto. Ahora que es progreso!

Explicación: el espacio del patrón en cada paso se menciona para mayor claridad, dado el ejemplo de entrada "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
fuente
3

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')
nolan
fuente
Si no agrego ninguna entrada a su respuesta. No funciona.
nolan