นี่ไม่ใช่วิทยาศาสตร์จรวด


59

เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้ในสายอักขระบรรทัดเดียว คุณสามารถสันนิษฐานได้ว่ามันมีASCII ที่พิมพ์ได้เท่านั้น พิมพ์หรือส่งคืนสตริงของจรวดศิลปะ ASCII เช่น

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

ด้วยสายป้อนที่เขียนจากบนลงล่างบนลำตัว Earthในกรณีนี้การป้อนข้อมูลที่เป็น ความสูงของจรวด (รวมถึงเปลวไฟ) มักจะเป็นความยาวของสตริงบวกห้า

แต่ละบรรทัดในเอาต์พุตอาจมีช่องว่างต่อท้ายสูงสุดสองบรรทัดและอาจมีบรรทัดใหม่ต่อท้ายที่เป็นตัวเลือกเดียว รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ

ตัวอย่างเพิ่มเติม:

[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

ลีดเดอร์บอร์ด


1
ที่เกี่ยวข้อง อาจมีคนอื่นที่อยู่ใกล้พอที่จะถือว่าเป็นคนหลงกล
Peter Taylor

2
@Sefa Spaces ใช่ ไม่มีที่ว่างอื่น ในฐานะที่เป็นวิกิที่เชื่อมโยงบ่งบอกถึง
งานอดิเรกของ Calvin

6
ดีโอฉันเห็นชื่อและคาดหวังบางอย่างเกี่ยวกับการผ่าตัดสมอง :(

17
และถ้าจุดต่ำสุดบนท้องฟ้าคุณจะไม่ไปอวกาศในวันนี้
AstroDan

4
"ทำงานได้ในโปรแกรม Kerbal Space ... "
Magic Octopus Urn

คำตอบ:


55

Excel VBA, 142 179 175 160 155 ไบต์

คำแนะนำ:

ตั้งค่าแผ่นงานของ Excel โดยที่เซลล์ A1 เป็นอินพุตและคอลัมน์ C เป็นเอาต์พุต ตั้งค่าการจัดตำแหน่งข้อความในคอลัมน์ C ไปยังศูนย์ เขียนและเรียกใช้รหัสต่อไปนี้ในหน้าต่าง Immediate:

[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 รหัส:

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

เอาท์พุท:

enter image description here

หมายเหตุ:ตัวอักษรและสีเป็นเพียงตัวเลือกส่วนบุคคล


บันทึก 15 ไบต์เนื่องจากข้อเสนอแนะของ edc65 ขอบคุณ

บันทึก 5 ไบต์เนื่องจากข้อเสนอแนะของ TaylorScott ขอบคุณ


บันทึก 15 ไบต์เพิ่ม"_"ลงใน T เช่นนี้[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

(ตกลงมีข้อผิดพลาดในรหัสของฉันและมันสายเกินไปที่จะแก้ไข แต่คุณได้รับความคิด)
edc65

@ edc65 ฉันไม่เข้าใจ รหัสของคุณเหมือนกันกับของฉันฉันควรแก้ไขอะไรเพื่อประหยัด 15 ไบต์?
Anastasiya-Romanova 秀

1
154 ไบต์:[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
หรือคุณสามารถลดขนาดลงได้ถึง 151 ไบต์โดยรักษาจุดศูนย์กลางไว้[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 ไบต์

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

101
slurp.chomp.comb... Perl นั้นแปลก
Mego

14
Slurp !!! Chomp !!! หวี!! มาที่นี่สัตว์ประหลาด Perl!
stommestack

โปรดทราบว่าด้วยการใช้ฟังก์ชั่นและการเชื่อมต่อคุณสามารถตัดออกได้มาก: {[~] " |\n /_\\\n",|(" |$_|\n"for $_.comb)," |_|\n/___\\\n VvV"}65 ไบต์
user0721090601

แต่คุณสามารถลดลงได้ด้วยการยืมจาก JS's: tio.run/ …
0721090601


16

ที่จริงแล้ว 40 ไบต์

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

ใช่ขึ้นบรรทัดใหม่เหล่านั้นควรจะมี

ลองออนไลน์!

คำอธิบาย:

บรรทัดใหม่จะถูกแทนด้วย\nการจัดรูปแบบที่ง่าย

"/___\\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
โปรแกรมของคุณดูคล้ายกับจรวดที่ระเบิด
corsiKa

15

C, 83 , 82 ไบต์

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

ทดสอบหลัก:

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

7
ฉันคิดหาวิธีแก้ปัญหา C ของตัวเองและมันก็กลายเป็นตัวคุณอย่างแท้จริงสำหรับตัวละคร +1 จากฉัน
โคดี้

บนโทรศัพท์และขี้เกียจเกินกว่า SSH ดังนั้นนี่จึงยังไม่ได้ทดสอบ แต่ควรใช้งานได้ บันทึก 2 ไบต์ (ถ้าฉันนับถูกต้อง):F(char*c){for(puts(" |\n /_\\");*c;printf(" |%c|\n",*c++),puts(" |_|\n/___\\\n VvV");}
algmyr

@algmyr บันทึกหนึ่งไบต์จริงเพราะสุดท้ายจะต้องมีการดำเนินการเพียงครั้งเดียวไม่ได้ทุกครั้งหลังputs printfแต่ใช่บันทึก 1 ไบต์ใช่!
Stefano Sanfilippo

ขวา. ฉันจะโทษว่าเมื่อเล่นกอล์ฟเมื่อฉันควรจะนอน
algmyr

นี่ไม่ใช่ 88 ไบต์ใช่ไหม
Gastropner

10

Python 2, 93 66 62 61 ไบต์

FGITW อาจจะเล่นกอล์ฟอย่างหนัก ยินดีต้อนรับข้อเสนอแนะ

แก้ไข: 27 ไบต์ขอบคุณ Mego ขอบคุณ 4 ไบต์สำหรับ TheBikingViking 1 ไบต์ด้วย user3030010

ลองออนไลน์!

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

9

PHP, 73 72 69 62 ไบต์

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

ใช้สตริงพิมพ์บนลำตัวเป็นอาร์กิวเมนต์แรกจากบรรทัดคำสั่งเมื่อสคริปต์ถูกเรียก

การปรับปรุง:

  1. ที่บันทึกไว้ไบต์โดยการแทนที่ \ n มีการขึ้นบรรทัดใหม่ LF joinจริงในอาร์กิวเมนต์แรกของ
  2. บันทึกอีกสามไบต์โดยต่อท้ายฐานจรวดที่มีขีดล่างเดียวกับอินพุต
  3. ขอบคุณIsmael Miguel : บันทึกอีก 7 ไบต์โดยใช้ประโยชน์จากความจริงที่ว่า PHP เคยเป็น "Hypertext preprocessor" เพื่อให้คุณสามารถส่งออกข้อความได้มากเท่าที่คุณต้องการและเริ่มต้นรหัสตรงกลาง

ลองออนไลน์!

สนุกมาก! :-)

โทรตัวอย่าง:

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


เล่นกอล์ฟได้ดี! ฉันลืมความเป็นไปได้ทั้งหมดอย่างสิ้นเชิง ขอขอบคุณ!
YetiCGN

ไม่เป็นไร นอกจากนี้ฉันบันทึก 2 ไบต์ในบรรทัดแรก คุณมีช่องว่างต่อท้ายพิเศษ 2 ช่อง นั่นคือสิ่งที่ฉันไม่ได้คาดหวังว่าจะพบฉันต้องบอกว่า
Ismael Miguel

1
ฉันรู้ว่ามันโง่จริงๆ แต่ก็ยากที่จะมองเห็น ฉันสังเกตเห็นเมื่อฉันมา 64 ไบต์ในรุ่นที่ปรับปรุงแล้วของคุณและต้องค้นหาสาเหตุ
YetiCGN

8

brainfuck , 179 ไบต์

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

ลองออนไลน์!


@ user00001 วลีนี้ใช้โดยมุสลิมทุกคนทั่วโลกไม่ใช่แค่ผู้ก่อการร้าย คุณคิดว่าผู้ก่อการร้ายเป็นตัวแทนของชาวมุสลิมทั้งหมดหรือไม่?
Leun Nun


8

Ruby, 57 55 ไบต์

-2 bytes โดย @ValueInk
-5 bytes โดยสมมติว่าไม่มีการขึ้นบรรทัดใหม่ในอินพุตตามที่ @manatwork แนะนำ Newline-less input สามารถให้ได้เช่นกับecho -n, like echo -n hey | ruby rocket.rb.

puts'  |
 /_\
 |'+gets.chars*'|
 |'+'|
 |_|
/___\
 VvV'
เวอร์ชันเก่าถือว่าเป็นบรรทัดใหม่ในอินพุต:

Ruby, 62 60 ไบต์

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

ตามความคิดเห็นของเจ้าของคำถามอินพุตจะไม่มีอักขระขึ้นบรรทัดใหม่ดังนั้นคุณสามารถลบ.chopได้
จัดการ

@ จัดการงานเรียบร้อยขอบคุณ :)
daniero

หากคุณใช้สตริงคำพูดเดียวที่คุณควรจะสามารถแทนที่ทั้งสองของคุณด้วย\\ \ (ในสตริงอ้างเดียวตัวละครจะไม่หนียกเว้น\'.
ราคาหมึก


7

เรติน่า44 44ไบต์

7 ไบต์ขอบคุณ Martin Ender

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

ลองออนไลน์!


ออกจากช่องว่างในแถวที่ด้านล่าง :( สำหรับ "Space, frontier final."
xQbert

@xQbert ใช้งานได้สำหรับฉันคุณสามารถแนบลิงค์ TIO ได้หรือไม่
รั่วนูน

แปลกมันใช้งานได้ดีสำหรับฉันตอนนี้ ... อาผิดพลาดของฉันมีการขึ้นบรรทัดใหม่ในตอนท้าย
xQbert

Retina เป็นภาษาเดียวที่ฉันรู้ว่าการเพิ่มบรรทัดใหม่ต่อท้ายสามารถเปลี่ยนโปรแกรมได้อย่างสมบูรณ์
caird coinheringaahing

6

เยลลี่ , 37 36 ไบต์

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

คะแนนเดียวกันกับรายการที่มีอยู่ แต่ใช้คุณลักษณะใหม่ที่สนุกสนาน - ŒBเวอร์ชัน vectorised ของŒḄหรือที่รู้จักกันในชื่อการตีกลับ การตีกลับกำลังเรียกใช้ผ่านรายการจนจบจากนั้นย้อนกลับx[:-1]+x[::-1]เช่น: bounce("codegolf") == "codegolflogedoc".

-1 ไบต์ขอบคุณเดนนิส (ใช้เวอร์ชันการตีกลับของเวกเตอร์)

อย่างไร?

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

ทดสอบบนTryItOnline


2
ŒBŒḄ€สั้นสำหรับ
เดนนิส


5

V , 41, 39 ไบต์

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

ลองออนไลน์!

โปรดทราบว่าด้วยเหตุผลบางประการล่ามออนไลน์ก็ให้ผลลัพธ์ที่ไม่คาดคิดดังนั้นฉันจึงผลักเวอร์ชันดีบั๊กไปที่ล่ามออนไลน์ที่ทำงานช้ากว่ามาก ควรให้ผลลัพธ์ที่ถูกต้องทันที

เนื่องจากโปรแกรมนี้มีอักขระที่ไม่สามารถพิมพ์ได้นี่คือ 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

ดี แต่ไม่รองรับช่องว่างใน "Space, the frontier final" ค่อนข้างถูกต้อง
xQbert

5

R, 163 ไบต์

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

ฉันไม่ชอบความจริงที่ฉันต้องใส่ช่องว่างในบรรทัดสุดท้าย แต่เดี๋ยวก่อน!


5

PowerShell v2 +, 59 55 51 ไบต์

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

ลองออนไลน์!

ใช้ค่าเริ่มต้นWrite-Outputเมื่อสิ้นสุดการดำเนินการเพื่อขึ้นบรรทัดใหม่ระหว่างแต่ละองค์ประกอบเนื่องจากทั้งหมดนี้เป็นเพียงสตริงตัวอักษรบนไปป์ไลน์ บิต "หากิน" เพียงอย่างเดียวคือวนลูปผ่านแต่ละส่วนของอินพุต$argsเป็นแบบ char-array เพื่อให้ได้เนื้อความของจรวด

ใช้การขึ้นบรรทัดใหม่ตามตัวอักษรโดย ConnorLSW เพื่อบันทึกไบต์บางส่วน
-4 ไบต์เพิ่มเติมขอบคุณ Veskah


คุณสามารถใส่ newlines ที่แท้จริงในสตริงเพื่อบันทึก 3, เชลล์และ ise รันได้โดยไม่ต้อง\r
colsw


4

PowerShell, 70 ไบต์

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

ตั้งค่า $ a เป็นอินพุต

หากจำเป็นต้องป้อนค่าอื่นที่ไม่ใช่ตัวแปรคุณสามารถไพพ์ได้ใน:

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

ตัวอย่าง:

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

4

Mathematica, 50 ไบต์

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

ฟังก์ชั่นไม่ระบุชื่อ รับรายการอักขระเป็นอินพุตและส่งคืนสตริงเป็นเอาต์พุต


4

PHP, 108 100 88 ไบต์

-8 ไบต์ขอบคุณ cat ธุรกิจ

-12 ไบต์ขอบคุณ YetiCGN

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

ตรงไปตรงมาสวย

Ideone


1
คุณสามารถบันทึกไบต์จำนวนมากโดยใช้foreach(str_split($a)as$c)แทนการวนซ้ำ นอกจากนี้คุณสามารถใส่ $ c ลงในสตริงได้โดยตรงหากคุณใช้เครื่องหมายคำพูดคู่:echo" |$c| ....";
Business Cat

@BusinessCat True ขอบคุณเครื่องหมายคำพูดคู่ไม่ทำงานกับความคิดของสไตล์อาร์เรย์เนื่องจากวงเล็บไม่ได้ถูกตีความ
Sefa

แล้วนิพจน์ทั่วไปล่ะ? function f($a){echo' |.␤ /_\\␤',preg_replace('/./',' |$0|␤',$a),' |_|␤/___\\␤ VvV';}
จัดการ

1
ทำไมถึงต้องใส่ฟังก์ชั่นรอบ ๆ ? การแทนที่$aด้วย$argv[1]และเรียกใช้จากบรรทัดคำสั่งทำให้สั้นกว่ามาก
YetiCGN

@ การจัดการมันอาจจะเป็นทางเลือกที่ถูกต้อง แต่เนื่องจากฉันไม่เข้าใจมันและมันก็ไม่ใช่วิญญาณแบบเดียวกับฉันฉันจะให้คุณโพสต์
Sefa

4

C #, 106 97 80 74 ไบต์

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

ฉันไม่มี C # 6 เพื่อลองด้านบน แต่ฉันเชื่อว่ามันใช้งานได้

บันทึกแล้ว 7 ไบต์ขอบคุณ Kevin Cruijssen

ขอบคุณ manatwork ที่ชี้ให้ฉันในทิศทางที่ถูกต้องเพื่อประหยัด 17 ไบต์

บันทึกแล้ว 6 ไบต์ขอบคุณนม


+1 Btw, พื้นที่ว่างต่อท้ายเป็นทางเลือกดังนั้นคุณสามารถเปลี่ยนเป็น: using System.Linq;s=>$(" |\n /_\\\n{string.Join("",s.Select(c=>" |"+c+"|\n"))} |_|\n/___\\\n VvV");( 100 ไบต์ )
Kevin Cruijssen

1
@KevinCruijssen ฉันอยู่ในขั้นตอนการอัปเดตหลังจากความคิดเห็นของคุณต่อคำตอบก่อนหน้านี้ของฉัน :) ขอบคุณสำหรับความช่วยเหลือ
TheLethalCoder

คุณสามารถบันทึกอักขระบางตัวได้โดยใช้ตัวอักษรสตริงเดียวภายใน Select : " |"+c+"|\n"c+"|\n |"พร้อมกับเลื่อน `| 'จาก{}ก่อนหน้า
จัดการ

@ วิธีการทำงานฉันไม่สามารถทำงานได้
TheLethalCoder

1
บรรทัดใหม่คือ 1 ไบต์เมื่อเทียบกับ\n2 ไบต์ ดังนั้นคุณจะประหยัดอีก 5 ไบต์โดยแทนที่ด้วยบรรทัดใหม่ ใช่ถ้าคุณกำลังใช้ Visual Studio โดยบรรทัดใหม่ที่เป็นค่าเริ่มต้นจะเป็น 2 ไบต์ แต่คุณสามารถเปิดไฟล์ต้นฉบับในโปรแกรมแก้ไข hex (Visual Studio มีหนึ่งตัว) และลบอักขระขึ้นบรรทัดใหม่ ผลลัพธ์จะยังคงเหมือนเดิม
นม

4

C,  131  , 121 ไบต์

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

คุณสามารถลบอักขระสามตัวโดยเลื่อนp=sไปที่การเริ่มต้นและใช้pภายใน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

ตกลง .... ฉันไม่รู้ว่าทำไม "scanf ("% s ", & s)" แทนที่จะเป็น "scanf ("% s ", s)" พิมพ์ที่ส่วนท้ายของผลลัพธ์ที่ถูกต้อง ... ที่สิ้นสุดเนื่องจาก scanf ไม่ได้รับ ช่องว่างที่ฉันชอบคืออันตรายที่ได้รับ () ...
RosLuP

2
กรุณาอย่าทำลายโพสต์ของคุณ ขอขอบคุณ!
NobodyNada


3

05AB1E , 50 47 43 37 ไบต์

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

ลองออนไลน์!

บันทึกแล้ว 9 ไบต์ขอบคุณ Adnan


สตริงยังสามารถยอมรับการขึ้นบรรทัดใหม่ใน 05AB1E: p เช่นนี้
Adnan

@Adnan ดีขอบคุณ! มีความคิดใดที่จะทำให้อินพุตว่างดีขึ้นได้อย่างไร
Emigna

ฉันกำลังคิดเกี่ยวกับวิธีการIðJในตอนต้นของโปรแกรมซึ่งรวมถึงพื้นฐานของลำตัวด้วย
Adnan

@Adnan ความคิดที่ดี ฉันลอง«ก่อนหน้านี้โดยไม่โชคดี มันดีกว่ามาก
Emigna

การลบUและแทนที่Xด้วยsยังช่วยประหยัด byte :)
Adnan

3

Kotlin, 68 ไบต์

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

ตรงไปตรงมาสวย ใช้สตริงหลายบรรทัดและการแทนที่ regex นี่คือแลมบ์ดาที่มี(String)->Stringประเภท ทดสอบ:

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

3

Gema, 50 ตัวอักษร

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

วิ่งตัวอย่าง:

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

3
คุณพลาด `| _ |` ก่อนที่ฐานของจรวดฉันคิดว่า
TheLethalCoder

อุ๊ยตาย เป็นใบ้ ขอบคุณ @TheLethalCoder
จัดการ

1
+1 สำหรับการแนะนำฉันกับภาษาใหม่ (กับฉัน) (ไม่ใช่กอล์ฟ)
จอร์แดน

3

BASH 84 70

บันทึกแล้ว 14 ขอบคุณการจัดการ

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

เกินครึ่งของไบต์ใช้สำหรับเพิ่มจมูกและเอ็นจิ้น


ทำไมgrep? (cat&&echo _)|sed 's~.~ |&|\n~g;1s~^~ |\n /_\\\n~;$s~$~/___\\\n VvV~'. จริงๆแล้วฉันไม่เห็นเหตุผลที่จะใช้catและechoอย่างใดอย่างหนึ่ง จะถูกเปลี่ยนให้สั้นลงเป็นsedสารละลายบริสุทธิ์
จัดการ

ด้วย sed sed บริสุทธิ์คุณจะไม่ได้รับผลลัพธ์ใด ๆ หากคุณไม่มีอินพุต
Riley

Doh คุณพูดถูก ขออภัยฉันลืมข้อกำหนดนั้นไป
จัดการ

@ การจัดการงานฉันลืมมันในครั้งแรกของฉันด้วย
Riley

สำหรับการอ้างอิงในอนาคตหลีกเลี่ยงการใช้แท็ก <pre> <code> ใช้ช่องว่าง 4 ช่องนำหน้ารหัสในอนาคตเนื่องจากจะเป็นการจัดรูปแบบ Markdown อัตโนมัติ ฉันยังคงรูปแบบปัจจุบันเนื่องจากขีดฆ่าผ่าน แต่คุณสามารถทิ้งไว้ในประวัติการแก้ไขได้เช่นกันสำหรับผู้ที่อยากรู้อยากเห็น
Addison Crump

3

GolfScript, 61 51 ไบต์

รหัสกอล์ฟครั้งแรกของฉันฉันหวังว่ามันจะดีพอ

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

คำอธิบาย

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

ลองออนไลน์!


3

เป็นกลุ่ม, 41 39 ไบต์

นี่<End>คือกุญแจ "สิ้นสุด" อย่างแท้จริง

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

Unprintables เพื่อ:

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

3

รุ่น GNU , 54 49 48 ไบต์

นี่เป็นคำตอบแรกของฉันสำหรับความท้าทายในเว็บไซต์นี้ การแก้ปัญหานั้นง่ายส่วนใหญ่พิมพ์ดังนั้นฉันใช้เวลาทำให้แน่ใจว่ามันไม่สามารถ golfed อีกต่อไป

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

ลองออนไลน์!

กรอไปข้างหน้าอย่างรวดเร็วในอีกครึ่งปีต่อมาฉันเขียนสคริปต์อีกครั้งใช้กลอุบายที่ดีและเล่นกอล์ฟให้สั้นลง 1 ไบต์ ตอนนี้กำลังคืบหน้า!

คำอธิบาย:พื้นที่รูปแบบในแต่ละขั้นตอนถูกกล่าวถึงเพื่อความชัดเจนโดยระบุตัวอย่างอินพุต "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 ไบต์

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

ถ้าฉันไม่เพิ่มคำตอบของคุณ มันไม่ทำงาน.
แลน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.