Questa non è scienza missilistica


59

Scrivi un programma o una funzione che accetta una stringa a riga singola. Si può presumere che contenga solo ASCII stampabile . Stampa o restituisce una stringa di un razzo d'arte ASCII come

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

con la stringa di input scritta dall'alto verso il basso sulla fusoliera. In questo caso l'input era Earth. L'altezza del razzo (comprese le fiamme) è sempre la lunghezza della corda più cinque.

Ogni riga nell'output può avere fino a due spazi finali e potrebbe esserci una nuova riga finale finale opzionale. Vince il codice più breve in byte.

Altri esempi:

[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

Classifica


1
Correlato . Potrebbero essercene altri abbastanza vicini da essere considerati un duplicato.
Peter Taylor,

2
@Sefa Spaces sì. No agli altri spazi bianchi. Come indica il wiki collegato .
Calvin's Hobbies,

6
D'oh, ho visto il titolo e mi aspettavo qualcosa sulla chirurgia del cervello. :(

17
E se la parte inferiore punta verso il cielo non andrai nello spazio oggi.
AstroDan,

4
"Ha funzionato nel programma spaziale Kerbal ..."
Magic Octopus Urn,

Risposte:


55

Excel VBA, 142 179 175 160 155 byte

Istruzione:

Imposta il foglio di lavoro di Excel in cui viene inserita la cella A1 e la colonna C come output. Impostare l'allineamento del testo nella colonna C al centro . Scrivi ed esegui il seguente codice nella finestra immediata:

[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 il codice:

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

Produzione:

inserisci qui la descrizione dell'immagine

Nota: il carattere e il colore sono solo una scelta personale.


15 byte salvati a causa del suggerimento di edc65. Grazie.

5 byte salvati grazie al suggerimento di TaylorScott. Grazie.


Salva 15 byte aggiungendo "_"a T. In questo modo[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 c'è un errore nel mio codice ed è troppo tardi per modificarlo. Ma hai avuto l'idea)
edc65

@ edc65 Non ho idea. Il tuo codice è esattamente lo stesso del mio, quindi cosa devo modificare per salvare 15 byte?
Anastasiya-Romanova 秀

1
154 byte:[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
Oppure potresti arrivare a 151 byte, mantenendo l'aspetto centrato[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 byte

"  |\n /_\\".say;" |$_|".say for slurp.chomp.comb;" |_|\n/___\\\n VvV".say;

101
slurp.chomp.comb... Perl è strano.
Mego

14
SLURP !!! CHOMP !!! PETTINE!! Ecco che arriva il mostro Perl!
Stommestack,

Nota che usando una funzione e una concatanazione puoi tagliare molto: {[~] " |\n /_\\\n",|(" |$_|\n"for $_.comb)," |_|\n/___\\\n VvV"}65 byte
user0721090601

Ma puoi andare ancora più in basso prendendo in prestito da JS: tio.run/…
user0721090601

22

JavaScript (ES6), 54

schietto

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>


16

In realtà, 40 byte

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

Sì, quelle nuove linee dovrebbero essere lì.

Provalo online!

Spiegazione:

Le nuove linee sono rappresentate da \nper una formattazione più semplice

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

12
Il tuo programma sembra deprimentemente simile a un razzo esploso.
corsiKa

15

C, 83 , 82 byte

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

Test principale:

int main() {
  F("");
  F("a");
  F("|0");
  F("\\/\\");
  F(" _ _ ");
  F("    ");
  F("SPACEY");
}

7
Ho elaborato la mia soluzione C, e si è rivelato essere esattamente tuo, personaggio per personaggio. +1 da me.
Cody,

Al telefono e troppo pigro per SSH, quindi questo non è testato, ma dovrebbe funzionare. Salva 2 byte (se ho contato correttamente):F(char*c){for(puts(" |\n /_\\");*c;printf(" |%c|\n",*c++),puts(" |_|\n/___\\\n VvV");}
algmyr

@algmyr salva un byte, in realtà, perché l'ultimo putsdeve essere eseguito solo una volta, non dopo ogni printf. Ma sì, 1 byte salvato, yay!
Stefano Sanfilippo,

Giusto. Lo biasimo per il golf quando avrei dovuto dormire.
algmyr,

Non sono 88 byte?
Gastropner,

10

Python 2, 93 66 62 61 byte

A FGITW. Probabilmente può essere fortemente giocato a golf. Suggerimenti benvenuti.

Modifica: 27 byte grazie a Mego. 4 byte grazie a TheBikingViking. 1 byte grazie a user3030010.

Provalo online!

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

9

PHP, 73 72 69 62 byte

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

Prende la stringa da stampare sulla fusoliera come primo argomento dalla riga di comando quando viene chiamato lo script.

miglioramenti:

  1. Salvato un byte sostituendo \ n con una nuova riga LF reale nel primo argomento di join.
  2. Salvati altri tre byte aggiungendo la base del razzo con un singolo trattino basso all'input
  3. Grazie a Ismael Miguel : hai salvato altri 7 byte sfruttando il fatto che PHP era il "preprocessore Hypertext" in modo da poter generare tutto il testo che desideri e avviare il codice da qualche parte nel mezzo.

Provalo online!

È stato divertente! :-)

Chiamate di esempio:

php rocket.php ""
php rocket.php EARTH
php rocket.php "This is a very long rocket"


Bel golf! Mi ero completamente dimenticato di quella possibilità. Grazie!
YetiCGN,

Prego. Inoltre, ho salvato 2 byte sulla prima riga. Hai avuto 2 spazi finali aggiuntivi su di esso. Era qualcosa che non mi aspettavo di trovare, devo dire.
Ismael Miguel,

1
Lo so, è stato davvero stupido ma anche difficile da individuare. Ho notato solo una volta che ho trovato 64 byte sulla tua versione migliorata e ho dovuto scoprire perché.
YetiCGN,

8

Brainfuck , 179 byte

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

Provalo online!


@ user00001 Questa frase è usata da tutti i musulmani di tutto il mondo, non solo dal terrorista. Pensi davvero che i terroristi rappresentino tutti i musulmani?
Leaky Nun,


8

Rubino, 57 55 byte

-2 byte di @ValueInk
-5 byte supponendo che non ci siano newline nell'input, come suggerito da @manatwork. L'input senza riga di comando può essere fornito ad esempio con echo -nlike echo -n hey | ruby rocket.rb.

puts'  |
 /_\
 |'+gets.chars*'|
 |'+'|
 |_|
/___\
 VvV'
Vecchia versione, assume newline in input:

Rubino, 62 60 byte

puts'  |
 /_\
 |'+gets.chop.chars*'|
 |'+'|
 |_|
/___\
 VvV'

In base al commento del proprietario della domanda, l'input non conterrà il carattere di nuova riga, quindi è possibile rimuoverlo .chop.
arte

@manatwork pulito, grazie :)
daniero,

Se si utilizzano le stringhe di singole quote, si dovrebbe essere in grado di sostituire sia il vostro \\ con \ . (Nelle stringhe tra virgolette singole, i caratteri non sono sottoposti a escape, ad eccezione di \'.
Valore inchiostro

7

Haskell, 58 byte

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

7

Retina , 44 37 byte

7 byte grazie a Martin Ender.

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

Provalo online!


lascia un vuoto di fila in fondo :( per "Spazio, l'ultima frontiera".
xQbert

@xQbert Funziona per me, puoi allegare un link TIO?
Leaky Nun,

strano, ora funziona bene per me ... ah il mio errore ha avuto una nuova riga alla fine.
xQbert

Retina è l'unica lingua che conosco che l'aggiunta di una nuova riga finale può cambiare completamente il programma.
caird coinheringaahing il

6

Gelatina , 37 36 byte

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

Stesso punteggio della voce esistente, ma utilizza una nuova funzionalità divertente ŒB, la versione vettoriale di ŒḄ, nota come rimbalzo. Bouncing è in esecuzione attraverso una lista fino alla fine e poi di nuovo x[:-1]+x[::-1]ad esempio: bounce("codegolf") == "codegolflogedoc".

-1 byte grazie a Dennis (usa la versione vettoriale di rimbalzo)

Come?

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

Provalo su TryItOnline


2
ŒBè l'abbreviazione di ŒḄ€.
Dennis,

6

Pyke , 40 37 35 byte

(Aggiornato per funzionare con l'ultima versione)

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

Provalo qui!


5

V , 41, 39 byte

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

Provalo online!

Si noti che per qualche motivo, l'interprete online stava producendo risultati inaspettati, quindi ho inviato una versione di debug all'interprete online che funziona molto più lentamente. Ora dovrebbe produrre i risultati corretti.

Poiché questo programma contiene caratteri non stampabili, ecco 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

Bello ma non gestisce gli spazi in "Spazio, l'ultima frontiera" del tutto giusto.
xQbert,

5

R, 163 byte

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

Non mi piace molto il fatto che ho dovuto mettere degli spazi nell'ultima riga, ma ehi!


5

PowerShell v2 +, 59 55 51 byte

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

Provalo online!

Abusa l'impostazione predefinita Write-Outputalla fine dell'esecuzione per inserire una nuova riga tra ciascun elemento, poiché si tratta solo di stringhe letterali sulla pipeline. L'unico bit "difficile" è un loop attraverso ogni elemento dell'input $argscome un char-array per ottenere il corpo del razzo.

Utilizza letteralmente newline come indicato da ConnorLSW per salvare alcuni byte.
-4 byte in più grazie alla Veskah.


puoi mettere delle newline effettive nella stringa per salvare 3, la shell e l' \r
isola vengono eseguite correttamente


4

PowerShell, 70 byte

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

Impostare $ a per l'input.

Se deve accettare input diversi da una variabile, può essere reindirizzato:

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

Esempio:

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

4

Mathematica, 50 byte

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

Funzione anonima. Prende un elenco di caratteri come input e restituisce una stringa come output.


4

PHP, 108 100 88 byte

-8 byte grazie al business cat

-12 byte grazie a YetiCGN

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

abbastanza diretto

Ideone


1
Puoi salvare molti byte usando foreach(str_split($a)as$c)invece dell'altro per il ciclo. Inoltre, è possibile inserire $ c direttamente nella stringa se si utilizzano virgolette doppie:echo" |$c| ....";
Business Cat

@BusinessCat È vero, grazie alle doppie virgolette non funzionava con lo stile di array pensato a causa delle parentesi non interpretate
Sefa,

Che dire dell'espressione regolare? function f($a){echo' |.␤ /_\\␤',preg_replace('/./',' |$0|␤',$a),' |_|␤/___\\␤ VvV';}
arte

1
Perché persino mettere una funzione attorno ad esso? La sostituzione $acon $argv[1]e l'esecuzione da linea di comando lo rende molto più breve.
YetiCGN,

@manatwork Probabilmente è una valida alternativa, ma poiché non lo capisco e non è nello stesso spirito del mio, ti lascerò pubblicare.
Sefa,

4

C #, 106 97 80 74 byte

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

Non ho C # 6 per provare quanto sopra ma credo che funzionerà

Salvato 7 byte grazie a Kevin Cruijssen

Grazie a manatwork per avermi indicato nella giusta direzione per salvare 17 byte

6 byte salvati grazie al latte


+1. A proposito, gli spazi bianchi finali sono opzionali, quindi puoi cambiarlo in: using System.Linq;s=>$(" |\n /_\\\n{string.Join("",s.Select(c=>" |"+c+"|\n"))} |_|\n/___\\\n VvV");( 100 byte )
Kevin Cruijssen,

1
@KevinCruijssen Ero in procinto di aggiornare questo dopo i tuoi commenti alla mia risposta precedente :) Grazie per l'aiuto
TheLethalCoder

Puoi salvare alcuni caratteri usando una sola stringa letterale all'interno Select: " |"+c+"|\n"c+"|\n |"insieme a spostare il | | `da {}prima di esso.
arte

@manatwork Non riesco a farlo funzionare
TheLethalCoder il

1
La nuova linea è di 1 byte rispetto ai \n2 byte di. Quindi risparmierai altri 5 byte sostituendoli con nuove linee. Sì, se stai usando Visual Studio, per impostazione predefinita le nuove righe saranno 2 byte, ma puoi aprire il file sorgente in un editor esadecimale (Visual Studio ne ha uno) ed eliminare i caratteri di ritorno a capo. L'output sarà sempre lo stesso.
latte,

4

C,  131  , 121 byte

#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");}

Puoi rimuovere tre personaggi spostandoti p=snell'inizializzazione e usando pall'interno 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 .... non so perché "scanf ("% s ", & s)" invece di "scanf ("% s ", s)" stampa alla fine il risultato corretto ... alla fine perché scanf non ottiene spazi che preferisco il pericolo diventa () ...
RosLuP

2
Per favore, non vandalizzare i tuoi post. Grazie!
NobodyNada,

3

Gelatina, 38 37 byte

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

Provalo online!

Stessa idea della mia risposta Pyth, ma probabilmente è possibile giocare a golf.


3

05AB1E , 50 47 43 37 byte

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

Provalo online!

Salvataggio di 9 byte grazie ad Adnan.


String può anche accettare newline in 05AB1E: p, in questo modo .
Adnan,

@Adnan Nice, grazie! Qualche idea su come aggirare meglio l'input vuoto?
Emigna,

Stavo pensando a un approccio IðJall'inizio del programma, che include anche le basi della fusoliera.
Adnan,

@Adnan Ottima idea. Ci ho provato «prima senza molta fortuna. Questo è molto meglio però.
Emigna,

La rimozione Ue la sostituzione Xcon ssalva anche un byte :).
Adnan,

3

Kotlin, 68 byte

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

Abbastanza diretto. Utilizza una stringa multilinea e una sostituzione regex. Questo è un lambda con (String)->Stringtipo. Test:

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

3

Gema, 50 personaggi

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

Esecuzione di esempio:

bash-4.3$ echo -n gema | gema '\A=  |\n\ /_\\\n;?=\ |?|\n;\Z=\ |_|\n/___\\\n\ VvV'
  |
 /_\
 |g|
 |e|
 |m|
 |a|
 |_|
/___\
 VvV

3
Mi manca il `| _ |` prima della base del razzo, credo
TheLethalCoder

Ahia. Scema signorina. Grazie @TheLethalCoder.
arte

1
+1 per avermi introdotto in una nuova lingua (per me) (non golf).
Giordania,

3

BASH 84 70

Salvato 14 grazie a manatwork

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

Oltre la metà dei byte serve per aggiungere il naso e il motore.


Perché il grep? (cat&&echo _)|sed 's~.~ |&|\n~g;1s~^~ |\n /_\\\n~;$s~$~/___\\\n VvV~'. In realtà non vedo alcun motivo per usare cate echoneanche. Sarebbe più breve trasformato in sedsoluzione pura .
arte

Con pura sed, non si ottiene alcun output se non si dispone di input
Riley,

Doh. Hai ragione. Scusa, ho dimenticato quella parte del requisito.
arte

@manatwork L'ho dimenticato anche nel mio primo tentativo.
Riley,

Per riferimento futuro, evitare di utilizzare i tag <pre> <code>. Usa 4 spazi che precedono il codice in futuro, poiché questo evita automaticamente la formattazione di Markdown. Ho mantenuto l'attuale formattazione grazie al barrato, ma puoi anche lasciarlo nella cronologia delle modifiche anche per chi è curioso di guardarlo.
Addison Crump,

3

GolfScript, 61 51 byte

Il mio primo codice golf, spero che sia abbastanza buono.

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

Spiegazione

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

Provalo online!


3

Vim, 41 39 byte

Qui <End>è letteralmente il tasto "Fine".

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

Non stampabili quindi:

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

3

GNU sed , 54 49 48 byte

Questa è stata la mia prima risposta a una sfida su questo sito. La soluzione è semplice, principalmente per la stampa, quindi ho trascorso un po 'di tempo assicurandomi che non fosse più possibile giocare a golf.

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

Provalo online!

Mezzo anno dopo, riscrivo la sceneggiatura, ho usato un trucco per una buona misura e l'ho ridotta a 1 byte in meno. Questo è progresso!

Spiegazione: lo spazio del modello in ogni passaggio è menzionato per chiarezza, dato l'esempio di input "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

3

Lua, 83 , 92 byte

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')

Se non aggiungo alcun input alla tua risposta. Non funziona.
Nolan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.