Dies ist keine Raketenwissenschaft


59

Schreiben Sie ein Programm oder eine Funktion, die eine einzeilige Zeichenfolge enthält. Sie können davon ausgehen, dass es nur druckbares ASCII enthält . Drucken Sie eine Zeichenfolge einer ASCII-Rakete wie

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

mit der Eingabezeichenfolge von oben nach unten auf den Rumpf geschrieben. In diesem Fall war die EingabeEarth . Die Höhe der Rakete (einschließlich der Flammen) entspricht immer der Länge der Saite plus fünf.

Jede Zeile in der Ausgabe kann bis zu zwei nachgestellte Leerzeichen enthalten und es kann eine einzelne optionale nachgestellte neue Zeile geben. Der kürzeste Code in Bytes gewinnt.

Mehr Beispiele:

[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

Bestenliste


1
Verwandte . Es kann andere geben, die nah genug sind, dass dies als Betrug zählt.
Peter Taylor

2
@Sefa Spaces ja. Nein zu anderen Leerzeichen. Wie das verlinkte Wiki anzeigt.
Calvins Hobbys

6
Oh, ich habe den Titel gesehen und etwas von einer Gehirnoperation erwartet. :(

17
Und wenn der Boden in den Himmel zeigt, werden Sie heute nicht in den Weltraum fliegen.
AstroDan

4
"Es hat im Kerbal Space Program funktioniert ..."
Magic Octopus Urn

Antworten:


55

Excel VBA, 142 179 175 160 155 Bytes

Anweisung:

Legen Sie das Arbeitsblatt von Excel fest, in dem Zelle A1 eingegeben wird, und Spalte C als die Ausgabe. Stellen Sie die Textausrichtung in Spalte C auf Mitte ein . Schreiben Sie den folgenden Code und führen Sie ihn im Direktfenster aus:

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

Ausgabe:

Bildbeschreibung hier eingeben

Hinweis: Die Schriftart und die Farbe sind nur eine persönliche Wahl.


15 Bytes gespart aufgrund des Vorschlags von edc65. Vielen Dank.

5 Bytes gespart aufgrund des Vorschlags von TaylorScott. Vielen Dank.


Speichern Sie 15 Bytes, indem Sie "_"zu T. hinzufügen . Gefällt [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
mir

(Ok, es gibt einen Fehler in meinem Code und es ist zu spät, um ihn zu bearbeiten. Aber Sie haben die Idee)
edc65

@ edc65 Ich habe keine Ahnung. Ihr Code ist mit meinem Code identisch. Was muss ich also bearbeiten, um 15 Byte zu sparen?
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
Oder Sie können es auf 151 Bytes reduzieren und dabei den Zentrierungsaspekt beibehalten[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;

101
slurp.chomp.comb... Perl ist komisch.
Mego

14
SCHLÜRFEN!!! CHOMP !!! KAMM!! Hier kommt das Perl-Monster!
Stommestack

Beachten Sie, dass Sie mit einer Funktion und Concatanation eine Menge ausschneiden können: {[~] " |\n /_\\\n",|(" |$_|\n"for $_.comb)," |_|\n/___\\\n VvV"}65 Bytes
user0721090601

Aber Sie können noch tiefer gehen, indem Sie sich bei JS ausleihen
user0721090601

22

JavaScript (ES6), 54

Einfach

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

Prüfung

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

Eigentlich 40 Bytes

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

Ja, diese Zeilenumbrüche sollen da sein.

Probieren Sie es online!

Erläuterung:

Zeilenumbrüche werden \nzur einfacheren Formatierung durch dargestellt

"/___\\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
Ihr Programm ähnelt deprimierend einer explodierten Rakete.
corsiKa

15

C, 83 , 82 Bytes

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

Testleitung:

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

7
Ich arbeitete meine eigene C-Lösung aus und es stellte sich heraus, dass es genau Ihre war, Charakter für Charakter. +1 von mir.
Cody

Am Telefon und zu faul zu SSH, so ist dies ungetestet, sollte aber funktionieren. Spart 2 Bytes (wenn ich richtig gezählt habe):F(char*c){for(puts(" |\n /_\\");*c;printf(" |%c|\n",*c++),puts(" |_|\n/___\\\n VvV");}
Algmyr

@algmyr speichert tatsächlich ein Byte, da das letzte putsnicht nach jedem, sondern nur einmal ausgeführt werden muss printf. Aber ja, 1 Byte gespeichert, yay!
Stefano Sanfilippo

Richtig. Ich werde es dem Golfen zuschreiben, wenn ich hätte schlafen sollen.
Algmyr

Ist das nicht 88 Bytes?
Gastropner

10

Python 2, 93 66 62 61 Bytes

Ein FGITW. Kann wahrscheinlich stark golfen werden. Vorschläge sind willkommen.

Edit: 27 Bytes dank Mego. 4 Bytes dank TheBikingViking. 1 Byte dank user3030010.

Probieren Sie es online!

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

9

PHP, 73 72 69 62 Bytes

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

Legt fest, dass die Zeichenfolge beim Aufruf des Skripts als erstes Argument in der Befehlszeile auf den Rumpf gedruckt wird.

Verbesserungen:

  1. Ein Byte wurde gespeichert, indem \ n im ersten Argument von durch eine echte LF-Zeile ersetzt wurde join.
  2. Sie haben drei weitere Bytes gespart, indem Sie die Raketenbasis mit einem einzelnen Unterstrich an die Eingabe angehängt haben
  3. Dank Ismael Miguel : Sie haben 7 weitere Bytes eingespart, indem Sie die Tatsache ausgenutzt haben, dass PHP früher der "Hypertext-Präprozessor" war, sodass Sie so viel Text ausgeben können, wie Sie möchten, und den Code irgendwo in der Mitte starten können.

Probieren Sie es online!

Das hat Spaß gemacht! :-)

Beispielanrufe:

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


Schönes Golfen! Ich habe diese Möglichkeit völlig vergessen. Danke!
YetiCGN

Bitte. Außerdem habe ich 2 Bytes in der ersten Zeile gespeichert. Sie hatten 2 zusätzliche nachgestellte Leerzeichen. Das war etwas, was ich nicht erwartet hatte, muss ich sagen.
Ismael Miguel

1
Ich weiß, das war wirklich dumm, aber auch wirklich schwer zu erkennen. Ich habe es erst bemerkt, als ich 64 Bytes für Ihre verbesserte Version gefunden habe und herausfinden musste, warum.
YetiCGN

8

Brainfuck , 179 Bytes

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

Probieren Sie es online!


@ user00001 Dieser Satz wird von allen Muslimen weltweit verwendet, nicht nur vom Terroristen. Glauben Sie wirklich, dass die Terroristen alle Muslime repräsentieren?
Undichte Nonne


8

Ruby, 57-55 Bytes

-2 Bytes von @ValueInk
-5 Bytes, wenn angenommen wird, dass die Eingabe keine neue Zeile enthält, wie von @manatwork vorgeschlagen. Newline-less Input kann zum Beispiel mit echo -nlike versehen werden echo -n hey | ruby rocket.rb.

puts'  |
 /_\
 |'+gets.chars*'|
 |'+'|
 |_|
/___\
 VvV'
Alte Version, setzt Newline in der Eingabe voraus:

Ruby, 62 60 Bytes

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

Entsprechend dem Kommentar des Fragenbesitzers enthält die Eingabe kein Zeilenvorschubzeichen, sodass Sie es entfernen können .chop.
Manatwork

@ Manatwork ordentlich, danke :)
Daniero

Wenn Sie Apostroph Strings verwenden, sollten Sie in der Lage sein , sowohl zu ersetzen Ihre \\ mit \ . (In Strings in einfachen Anführungszeichen werden die Zeichen mit Ausnahme von \'.
Value Ink

7

Haskell, 58 Bytes

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

7

Retina , 44 37 Bytes

7 Bytes dank Martin Ender.

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

Probieren Sie es online!


Lässt eine Lücke in einer Zeile am unteren Rand :( für "Space, die letzte Grenze."
XQbert

@xQbert Funktioniert für mich, können Sie einen TIO-Link anhängen?
Undichte Nonne

seltsam, es funktioniert jetzt gut für mich ... ah mein Fehler hatte eine neue Zeile am Ende.
XQbert

Retina ist die einzige Sprache, die ich kenne und die das Programm komplett ändern kann, wenn ich eine abschließende Zeile hinzufüge.
Caird Coinheringaahing

6

Jelly , 37 36 Bytes

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

Gleiche Punktzahl wie bei vorhandenem Eintrag, jedoch mit einer unterhaltsamen neuen Funktion - ŒBder vektorisierten Version von ŒḄBounce. Das Bouncen durchläuft eine Liste bis zu ihrem Ende und kehrt dann zurück, x[:-1]+x[::-1]zB:bounce("codegolf") == "codegolflogedoc" .

-1 Byte dank Dennis (benutze die vektorisierte Version von Bounce)

Wie?

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

Testen Sie es auf TryItOnline


2
ŒBist eine Abkürzung für ŒḄ€.
Dennis


5

V , 41, 39 Bytes

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

Probieren Sie es online!

Beachten Sie, dass der Online-Interpreter aus irgendeinem Grund zu unerwarteten Ergebnissen führte. Ich habe daher eine Debug-Version auf den Online-Interpreter übertragen, die viel langsamer ausgeführt wird. Es sollte jetzt die richtigen Ergebnisse liefern.

Da dieses Programm nicht druckbare Zeichen enthält, ist hier ein 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

Schön, aber die Leerzeichen in "Space, the final frontier" sind nicht ganz in Ordnung.
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="")

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

Ich mag es nicht wirklich, dass ich in der letzten Zeile ein Leerzeichen setzen musste, aber hey!


5

PowerShell v2 +, 59 55 51 Byte

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

Probieren Sie es online!

Missbraucht den Standardwert Write-Outputam Ende der Ausführung, um eine neue Zeile zwischen jedes Element zu setzen, da dies alles nur wörtliche Zeichenfolgen in der Pipeline sind. Das einzige "knifflige" Bit ist eine Schleife durch jedes Element der Eingabe $argsals Zeichen-Array, um den Körper der Rakete zu erhalten.

Verwendet wörtliche Zeilenumbrüche, auf die ConnorLSW hingewiesen hat, um einige Bytes zu sparen.
-4 weitere Bytes dank Veskah.


Sie können tatsächliche Zeilenumbrüche in der Zeichenfolge setzen 3, um die Schale zu speichern und ise fein ausführen , ohne die\r
colsw


4

PowerShell, 70 Byte

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

Setze $ a auf input.

Wenn eine andere Eingabe als eine Variable erforderlich ist, kann Folgendes eingegeben werden:

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

Beispiel:

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

4

Mathematica, 50 Bytes

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

Anonyme Funktion. Nimmt eine Liste von Zeichen als Eingabe und gibt eine Zeichenfolge als Ausgabe zurück.


4

PHP, 108 100 88 Bytes

-8 bytes dank business cat

-12 Bytes dank YetiCGN

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

ziemlich einfach

Ideone


1
Sie können eine Menge Bytes sparen, indem Sie foreach(str_split($a)as$c)anstelle der anderen for-Schleife verwenden. Sie können $ c auch direkt in die Zeichenfolge einfügen, wenn Sie doppelte Anführungszeichen verwenden:echo" |$c| ....";
Business Cat

@ BusinessCat True, dank der doppelten Anführungszeichen nicht mit dem Array-Stil gedacht, weil die Klammern nicht interpretiert werden
Sefa

Was ist mit regulären Ausdrücken? function f($a){echo' |.␤ /_\\␤',preg_replace('/./',' |$0|␤',$a),' |_|␤/___\\␤ VvV';}
Manatwork

1
Warum überhaupt eine Funktion darum herum setzen? Durch Ersetzen $amit $argv[1]und Ausführen von der Befehlszeile aus wird es viel kürzer.
YetiCGN

@manatwork Es ist wahrscheinlich eine gültige Alternative, aber da ich es nicht verstehe und es nicht in meinem Sinne ist, lasse ich Sie es posten.
Sefa

4

C # 106 97 80 74 Bytes

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

Ich habe kein C # 6, um das Obige zu versuchen, aber ich glaube, es wird funktionieren

7 Bytes dank Kevin Cruijssen gespeichert

Vielen Dank an Manatwork, dass ich in die richtige Richtung gewiesen habe, um 17 Bytes zu sparen

6 Bytes dank Milch gespart


+1. Übrigens, nachfolgende Leerzeichen sind optional, so dass Sie es ändern können: using System.Linq;s=>$(" |\n /_\\\n{string.Join("",s.Select(c=>" |"+c+"|\n"))} |_|\n/___\\\n VvV");( 100 Bytes )
Kevin Cruijssen

1
@ KevinCruijssen Ich war gerade dabei, dies nach Ihren Kommentaren zu meiner vorherigen Antwort zu aktualisieren :) Danke für die Hilfe
TheLethalCoder

Sie können einige Zeichen speichern, indem Sie ein einzelnes String-Literal verwenden Select: " |"+c+"|\n"c+"|\n |"zusammen mit dem vorangestellten `|` {}.
Manatwork

@ Manatwork Ich kann nicht scheinen, um das zum
Laufen

1
Neue Zeile ist 1 Byte im Vergleich zu \n2 Byte. Sie sparen also 5 weitere Bytes, indem Sie sie durch neue Zeilen ersetzen. Ja, wenn Sie Visual Studio verwenden, sind die neuen Zeilen standardmäßig 2 Byte groß. Sie können die Quelldatei jedoch in einem Hex-Editor öffnen (Visual Studio hat einen) und die Wagenrücklaufzeichen löschen. Die Ausgabe bleibt unverändert.
Milch

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

Sie können drei Zeichen entfernen, indem Sie p=sin die Initialisierung wechseln und das pInnere verwenden 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 .... ich weiß nicht warum "scanf ("% s ", & s)" anstelle von "scanf ("% s ", s)" am Ende das richtige Ergebnis ausgeben ... am Ende, weil scanf nicht erhalten wird Räume, die ich bevorzuge, die Gefahr bekommt () ...
RosLuP

2
Bitte verwirren Sie Ihre Beiträge nicht. Danke!
NobodyNada

3

Jelly, 38 37 Bytes

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

Probieren Sie es online!

Die gleiche Idee wie bei meiner Pyth-Antwort, aber das kann wahrscheinlich Golf gespielt werden.


3

05AB1E , 50 47 43 37 Bytes

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

Probieren Sie es online!

Dank Adnan 9 Bytes gespart.


String kann auch Zeilenumbrüche in 05AB1E akzeptieren: p, wie diese .
Adnan

@Adnan Schön, danke! Irgendeine Idee, wie man die leere Eingabe besser umgehen kann?
Emigna

Ich habe IðJzu Beginn des Programms über einen Ansatz nachgedacht , der auch die Basis des Rumpfes enthält.
Adnan

@ Adnan Tolle Idee. Ich habe das mit «früher ohne viel Glück versucht . Das ist aber viel besser.
Emigna

Das Entfernen Uund Ersetzen Xdurch sspeichert auch ein Byte :).
Adnan

3

Kotlin, 68 Bytes

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

Ziemlich einfach. Verwendet mehrzeilige Zeichenfolge und einen Regex-Ersatz. Dies ist ein Lambda mit (String)->StringTyp. Prüfung:

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

3

Gema, 50 Zeichen

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

Probelauf:

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

3
Sie vermissen das `| _ |` vor der Basis der Rakete, glaube ich
TheLethalCoder

Autsch. Dummes Fräulein. Vielen Dank an TheLethalCoder.
Manatwork

1
+1 für die Einführung in eine neue (für mich) (nicht golfende) Sprache.
Jordanien

3

BASH 84 70

14 dank Handarbeit gerettet

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

Über die Hälfte der Bytes ist für das Hinzufügen der Nase und des Motors bestimmt.


Warum das grep? (cat&&echo _)|sed 's~.~ |&|\n~g;1s~^~ |\n /_\\\n~;$s~$~/___\\\n VvV~'. Eigentlich sehe ich keinen Grund catund auch echokeinen. Wäre kürzer in reine sedLösung umgewandelt.
manatwork

Mit pure sed erhalten Sie keine Ausgabe, wenn Sie keine Eingabe haben
Riley

Doh. Du hast recht. Entschuldigung, ich habe diesen Teil der Anforderung vergessen.
Manatwork

@manatwork Ich habe es auch beim ersten Versuch vergessen.
Riley

Vermeiden Sie zum späteren Nachschlagen die Verwendung von <pre> <code> -Tags. Verwenden Sie in Zukunft 4 Leerzeichen vor dem Code, da dadurch die Formatierung von Markdown automatisch ausgeblendet wird. Ich habe die aktuelle Formatierung aufgrund des Durchgestrichenen beibehalten, aber Sie können dies auch in der Bearbeitungshistorie belassen, wenn Sie neugierig darauf sind.
Addison Crump

3

GolfScript, 61 51 Bytes

Mein erster Code Golf, ich hoffe es ist gut genug.

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

Erläuterung

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

Probieren Sie es online!


3

Vim, 41 39 Bytes

Hier <End>ist die buchstäblich die "End" -Taste.

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

Unbedruckbares also:

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

3

GNU sed , 54 49 48 Bytes

Dies war meine erste Antwort auf eine Herausforderung auf dieser Website. Die Lösung ist einfach, hauptsächlich das Drucken, daher habe ich einige Zeit darauf verwendet, sicherzustellen, dass es nicht mehr zum Golfen geeignet ist.

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

Probieren Sie es online!

Ein halbes Jahr später habe ich das Skript umgeschrieben, einen Trick verwendet und es auf 1 Byte kürzer golfen. Das ist ein Fortschritt!

Erläuterung: Der Musterraum bei jedem Schritt wird aus Gründen der Übersichtlichkeit anhand des Eingabebeispiels "GO" angegeben.

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

Wenn ich Ihrer Antwort keine Eingabe hinzufüge. Es funktioniert nicht.
Nolan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.