Ini bukan ilmu roket


59

Tulis program atau fungsi yang menggunakan string satu baris. Anda dapat menganggapnya hanya berisi ASCII yang dapat dicetak . Cetak atau kembalikan string roket seni ASCII seperti

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

dengan string input tertulis dari atas ke bawah pada badan pesawat. Dalam hal ini inputnya adalah Earth. Ketinggian roket (termasuk nyala api) selalu sepanjang tali ditambah lima.

Setiap baris dalam output mungkin memiliki hingga dua spasi tambahan dan mungkin ada satu baris tambahan opsional. Kode terpendek dalam byte menang.

Lebih banyak contoh:

[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

Papan peringkat


1
Terkait . Mungkin ada orang lain yang cukup dekat sehingga dianggap sebagai korban penipuan.
Peter Taylor

2
@Sefa Spaces ya. Tidak ke spasi putih lainnya. Seperti yang ditunjukkan oleh wiki tertaut .
Calvin Hobbies

6
Doh, saya melihat judulnya dan mengharapkan sesuatu tentang operasi otak. :(

17
Dan jika titik bawah di langit Anda tidak akan pergi ke luar angkasa hari ini.
AstroDan

4
"Itu bekerja di Program Luar Angkasa Kerbal ..."
Magic Octopus Mm

Jawaban:


55

Excel VBA, 142 179 175 160 155 byte

Petunjuk:

Atur lembar kerja Excel di mana sel A1 adalah input dan kolom C sebagai output. Setel perataan teks di kolom C ke tengah . Tulis dan jalankan kode berikut di Jendela Segera:

[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

Keluaran:

masukkan deskripsi gambar di sini

Catatan: Fon dan warnanya hanyalah pilihan pribadi.


15 byte disimpan karena saran edc65. Terima kasih.

5 byte disimpan karena saran TaylorScott. Terima kasih.


Simpan 15 byte menambahkan "_"ke T. Suka ini[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 ada kesalahan dalam kode saya dan sudah terlambat untuk mengeditnya. Tapi Anda mendapatkan ide)
edc65

@ edc65 Saya tidak mengerti. Kode Anda persis sama dengan kode saya jadi apa yang harus saya edit untuk menghemat 15 byte?
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
Atau Anda bisa menurunkannya hingga 151 byte, menjaga aspek centering[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 itu aneh.
Mego

14
MENCUCUP!!! CHOMP !!! SISIR!! Di sinilah monster Perl!
stommestack

Perhatikan bahwa dengan menggunakan fungsi dan concatanation Anda dapat memotong banyak: {[~] " |\n /_\\\n",|(" |$_|\n"for $_.comb)," |_|\n/___\\\n VvV"}65 byte
user0721090601

Tapi Anda bisa lebih rendah lagi dengan meminjam dari JS: tio.run/…
user0721090601

22

JavaScript (ES6), 54

Mudah

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

Uji

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

Sebenarnya, 40 byte

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

Ya, baris baru itu seharusnya ada di sana.

Cobalah online!

Penjelasan:

Baris baru diwakili oleh \nuntuk pemformatan yang lebih mudah

"/___\\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
Program Anda terlihat sangat mirip dengan roket yang meledak.
corsiKa

15

C, 83 , 82 byte

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

Tes utama:

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

7
Saya mengerjakan solusi C saya sendiri, dan ternyata itu persis milik Anda, karakter untuk karakter. +1 dari saya.
Cody

Di telepon dan terlalu malas untuk SSH, jadi ini belum diuji, tetapi harus bekerja. Menghemat 2 byte (jika saya hitung dengan benar):F(char*c){for(puts(" |\n /_\\");*c;printf(" |%c|\n",*c++),puts(" |_|\n/___\\\n VvV");}
algmyr

@algmyr menyimpan satu byte, sebenarnya, karena yang terakhir putsharus dijalankan hanya sekali, bukan setelah setiap printf. Tapi ya, 1 byte disimpan, yay!
Stefano Sanfilippo

Baik. Saya akan menyalahkan golf saat saya seharusnya tidur.
algmyr

Apakah ini bukan 88 byte?
gastropner

10

Python 2, 93 66 62 61 byte

A FGITW. Mungkin bisa sangat bermain golf. Saran diterima.

Sunting: 27 bytes berkat Mego. 4 byte berkat TheBikingViking. Terima kasih 1 byte ke user3030010.

Cobalah secara Online!

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

9

PHP, 73 72 69 62 byte

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

Mengambil string untuk dicetak di badan pesawat sebagai argumen pertama dari baris perintah ketika skrip dipanggil.

Perbaikan:

  1. Menyimpan byte dengan mengganti \ n dengan LF baris baru dalam argumen pertama join.
  2. Menyimpan tiga byte lagi dengan menambahkan basis roket dengan satu garis bawah pada input
  3. Terima kasih kepada Ismael Miguel : Menyelamatkan 7 byte lebih banyak dengan memanfaatkan fakta bahwa PHP dulunya merupakan "Hypertext preprocessor" sehingga Anda dapat menampilkan teks sebanyak yang Anda inginkan dan memulai kode di suatu tempat di tengah.

Cobalah online!

Ini sangat menyenangkan! :-)

Contoh panggilan:

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


Golf yang bagus! Saya benar-benar lupa tentang kemungkinan itu. Terima kasih!
YetiCGN

Sama-sama. Juga, saya menyimpan 2 byte pada baris pertama. Anda memiliki 2 ruang tambahan tambahan di atasnya. Itu sesuatu yang tidak saya harapkan untuk ditemukan, harus saya katakan.
Ismael Miguel

1
Saya tahu, itu benar-benar bodoh tetapi juga sangat sulit dikenali. Saya hanya memperhatikan sekali saya menghasilkan 64 byte pada versi yang ditingkatkan dan harus mencari tahu mengapa.
YetiCGN

8

brainfuck , 179 byte

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

Cobalah online!


@ user00001 Frasa ini digunakan oleh semua Muslim di seluruh dunia, bukan hanya teroris. Apakah Anda benar-benar berpikir bahwa teroris mewakili semua Muslim?
Leaky Nun


8

Ruby, 57 55 byte

-2 bytes oleh @ValueInk
-5 bytes dengan mengasumsikan bahwa tidak ada baris baru dalam input, seperti yang disarankan oleh @manatwork. Input baris-kurang dapat diberikan misalnya dengan echo -n, misalnya echo -n hey | ruby rocket.rb.

puts'  |
 /_\
 |'+gets.chars*'|
 |'+'|
 |_|
/___\
 VvV'
Versi lama, mengasumsikan baris baru dalam input:

Ruby, 62 60 byte

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

Menurut komentar pemilik pertanyaan, input tidak akan mengandung karakter baris baru, sehingga Anda dapat menghapus .chop.
manatwork

@manatwork rapi, terima kasih :)
daniero

Jika Anda menggunakan string kutipan tunggal, Anda harus dapat mengganti keduanya \\ dengan Anda \ . (Dalam string yang dikutip tunggal, karakter tidak lolos, kecuali untuk \'.
Value Ink

7

Haskell, 58 byte

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

7

Retina , 44 37 byte

7 byte berkat Martin Ender.

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

Cobalah online!


meninggalkan celah pada baris di bagian bawah :( untuk "Space, the final frontier."
xQbert

@xQbert Bekerja untuk saya, dapatkah Anda melampirkan tautan TIO?
Leaky Nun

aneh, itu berfungsi dengan baik untuk saya sekarang ... ah kesalahan saya punya baris baru di akhir.
xQbert

Retina adalah satu-satunya bahasa yang saya tahu yang menambahkan baris baru dapat sepenuhnya mengubah program.
caird coinheringaahing

6

Jelly , 37 36 byte

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

Skor yang sama dengan entri yang ada, tetapi menggunakan fitur baru yang menyenangkan - ŒB, versi vektor dari ŒḄ, yang dikenal sebagai pentalan. Memantul berjalan melalui daftar sampai akhir lalu kembalix[:-1]+x[::-1] misalnya: bounce("codegolf") == "codegolflogedoc".

-1 byte berkat Dennis (gunakan versi bouncing yang di vektorisasi)

Bagaimana?

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

Uji di TryItOnline


2
ŒBkependekan dari ŒḄ€.
Dennis


5

V , 41, 39 byte

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

Cobalah online!

Perhatikan bahwa untuk beberapa alasan, penerjemah online menghasilkan hasil yang tidak terduga, jadi saya mendorong versi debug ke penerjemah online yang berjalan jauh lebih lambat. Seharusnya menghasilkan hasil yang benar sekarang.

Karena program ini mengandung karakter yang tidak patut dicetak, berikut adalah 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

Bagus tetapi tidak menangani spasi di "Space, the final frontier" dengan benar.
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="")

Tidak Disatukan:

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

Saya tidak terlalu suka fakta bahwa saya harus meletakkan beberapa spasi di baris terakhir, tapi hei!


5

PowerShell v2 +, 59 55 51 byte

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

Cobalah online!

Menyalahgunakan default Write-Outputdi akhir eksekusi untuk menempelkan baris baru di antara setiap elemen, karena ini semua hanyalah string literal pada pipa. Satu-satunya bit "tricky" adalah loop melalui setiap elemen input $argssebagai char-array untuk mendapatkan tubuh roket.

Menggunakan baris baru literal seperti yang ditunjukkan oleh ConnorLSW untuk menghemat beberapa byte.
-4 byte lagi berkat Veskah.


Anda dapat meletakkan baris baru yang sebenarnya dalam string untuk menghemat 3, shell dan ise mengeksekusi dengan baik tanpa\r
colsw


4

PowerShell, 70 byte

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

Setel $ a ke input.

Jika harus mengambil input selain dari variabel, ia dapat disalurkan ke:

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

Contoh:

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

4

Mathematica, 50 byte

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

Fungsi anonim. Mengambil daftar karakter sebagai input dan mengembalikan string sebagai output.


4

PHP, 108 100 88 byte

-8 Bytes berkat kucing bisnis

-12 byte berkat YetiCGN

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

cukup mudah

Ideone


1
Anda dapat menyimpan banyak byte dengan menggunakan foreach(str_split($a)as$c)bukan yang lain untuk loop. Selain itu, Anda dapat memasukkan $ c langsung ke string jika Anda menggunakan tanda kutip ganda:echo" |$c| ....";
Business Cat

@BusinessCat Benar, terima kasih tanda kutip ganda tidak berfungsi dengan pemikiran gaya array karena tanda kurung tidak ditafsirkan
Sefa

Bagaimana dengan ekspresi reguler? function f($a){echo' |.␤ /_\\␤',preg_replace('/./',' |$0|␤',$a),' |_|␤/___\\␤ VvV';}
manatwork

1
Mengapa bahkan menempatkan fungsi di sekitarnya? Mengganti $adengan $argv[1]dan menjalankan dari baris perintah membuatnya lebih pendek.
YetiCGN

@manatwork Ini mungkin alternatif yang valid, tetapi karena saya tidak memahaminya dan itu bukan semangat yang sama dengan saya, saya akan membiarkan Anda mempostingnya.
Sefa

4

C #, 106 97 80 74 byte

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

Saya tidak punya C # 6 untuk mencoba di atas tetapi saya yakin itu akan berhasil

Disimpan 7 byte berkat Kevin Cruijssen

Terima kasih kepada manatwork karena mengarahkan saya ke arah yang benar untuk menghemat 17 byte

Disimpan 6 byte berkat susu


+1. Btw, spasi spasi tambahan adalah opsional, jadi Anda dapat mengubahnya ke: using System.Linq;s=>$(" |\n /_\\\n{string.Join("",s.Select(c=>" |"+c+"|\n"))} |_|\n/___\\\n VvV");( 100 byte )
Kevin Cruijssen

1
@KevinCruijssen Saya baru saja dalam proses memperbarui ini setelah komentar Anda untuk jawaban saya sebelumnya :) Terima kasih atas bantuannya
TheLethalCoder

Anda dapat menyimpan beberapa karakter dengan menggunakan string tunggal literal di dalam Select: " |"+c+"|\n"c+"|\n |"bersamaan dengan memindahkan `|` dari setelah {}sebelumnya.
manatwork

@manatwork Sepertinya saya tidak bisa membuatnya bekerja
TheLethalCoder

1
Baris baru adalah 1 byte dibandingkan dengan \n2 byte. Jadi Anda akan menghemat 5 byte lebih banyak dengan menggantinya dengan baris baru. Ya, jika Anda menggunakan Visual Studio maka secara default baris baru akan menjadi 2 byte, tetapi Anda dapat membuka file sumber dalam hex editor (Visual Studio memilikinya) dan menghapus karakter carriage return. Outputnya akan tetap sama.
susu

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

Anda dapat menghapus tiga karakter dengan berpindah p=ske inisialisasi, dan menggunakan pdi dalam 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 .... saya tidak tahu mengapa "scanf ("% s ", & s)" bukannya "scanf ("% s ", s)" mencetak pada akhir hasil yang benar ... pada akhirnya karena scanf tidak mendapat spasi saya lebih suka bahaya mendapat () ...
RosLuP

2
Tolong jangan merusak posting Anda. Terima kasih!
NobodyNada

3

Jelly, 38 37 byte

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

Cobalah online!

Gagasan yang sama dengan jawaban Pyth saya, tetapi ini mungkin bisa golf.


3

05AB1E , 50 47 43 37 byte

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

Cobalah online!

Disimpan 9 byte berkat Adnan.


String juga dapat menerima baris baru di 05AB1E: p, seperti ini .
Adnan

@ Adnan Bagus, terima kasih! Adakah cara untuk menyiasati input kosong dengan lebih baik?
Emigna

Saya sedang memikirkan pendekatan dengan IðJdi awal program, yang juga termasuk dasar badan pesawat.
Adnan

@ Adnan Ide bagus. Saya mencobanya dengan «sebelumnya tanpa banyak keberuntungan. Ini jauh lebih baik.
Emigna

Menghapus Udan mengganti Xdengans juga menyimpan byte :).
Adnan

3

Kotlin, 68 byte

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

Cukup mudah. Menggunakan string multiline dan penggantian regex. Ini adalah lambda dengan (String)->Stringtipe. Uji:

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

3

Gema, 50 karakter

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

Contoh dijalankan:

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

3
Anda melewatkan `| ​​_ |` sebelum dasar roket saya pikir
TheLethalCoder

Aduh. Nona bodoh. Terima kasih @TheLethalCoder.
manatwork

1
+1 untuk memperkenalkan saya pada bahasa baru (untuk saya) (non-golf).
Jordan

3

BASH 84 70

Disimpan 14 berkat manatwork

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

Lebih dari setengah dari byte adalah untuk menambahkan hidung, dan mesin.


Mengapa grep? (cat&&echo _)|sed 's~.~ |&|\n~g;1s~^~ |\n /_\\\n~;$s~$~/___\\\n VvV~'. Sebenarnya saya tidak melihat alasan untuk menggunakan catdan echobaik. Akan lebih pendek diubah menjadi sedsolusi murni .
manatwork

Dengan sed murni, Anda tidak mendapatkan output apa pun jika Anda tidak memiliki input
Riley

Doh. Kamu benar. Maaf, saya lupa bagian persyaratan itu.
manatwork

@manatwork Saya lupa tentang itu di percobaan pertama saya juga.
Riley

Untuk referensi di masa mendatang, hindari menggunakan tag <pre> <code>. Gunakan 4 spasi sebelum kode di masa depan, karena ini otomatis lolos dari penurunan harga. Saya telah mempertahankan pemformatan saat ini karena dicoret, tetapi Anda bisa membiarkannya dalam edit history juga bagi mereka yang ingin melihatnya.
Addison Crump

3

GolfScript, 61 51 byte

Golf kode pertama saya, saya harap ini cukup bagus.

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

Penjelasan

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

Cobalah online!


3

Vim, 41 39 byte

Di sini <End>secara harfiah kunci "Akhir".

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

Tidak dapat dicetak jadi:

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

3

GNU sed , 54 49 48 bytes

Ini adalah jawaban pertama saya terhadap tantangan di situs ini. Solusinya sederhana, terutama pencetakan, jadi saya menghabiskan waktu memastikan tidak bisa golf lagi.

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

Cobalah online!

Maju cepat setengah tahun kemudian, saya menulis ulang skrip, menggunakan trik untuk ukuran yang baik dan memutarnya menjadi 1 byte lebih pendek. Nah, itu kemajuan!

Penjelasan: ruang pola pada setiap langkah disebutkan untuk kejelasan, diberikan contoh 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')

Jika saya tidak menambahkan input ke jawaban Anda. Tidak bekerja.
nolan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.