이것은 로켓 과학이 아닙니다


59

한 줄짜리 문자열을받는 프로그램이나 함수를 작성하십시오. 인쇄 가능한 ASCII 만 포함한다고 가정 할 수 있습니다 . 다음과 같은 ASCII 아트 로켓의 문자열을 인쇄하거나 반환하십시오.

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

동체의 입력 문자열이 위에서 아래로 쓰여집니다. 이 경우 입력은 Earth입니다. 로켓의 높이 (화염 포함)는 항상 줄 길이에 5를 더한 값입니다.

출력의 각 줄은 최대 두 개의 후행 공백을 가질 수 있으며 단일 선택적 후행 줄 바꿈이있을 수 있습니다. 바이트 단위의 가장 짧은 코드가 이깁니다.

더 많은 예 :

[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
관련 . 이것이 속임수로 간주되기에 충분히 가까운 다른 사람들이있을 수 있습니다.
피터 테일러

2
@ 세파 스페이스 예. 다른 공백은 없습니다. 연결된 위키가 나타내는 것처럼 .
Calvin 's Hobbies

6
D' oh, 나는 제목을보고 뇌 수술에 대한 무언가를 기대했다. :(

17
그리고 바닥이 하늘을 가리키면 오늘 우주에 가지 않을 것입니다.
AstroDan

4
"Kerbal Space Program에서 일했습니다 ..."
Magic Octopus Urn

답변:


55

엑셀 VBA, 142 179 175 160 155 바이트

교수:

셀 A1이 입력되고 C 열이 출력되는 Excel 워크 시트를 설정하십시오. C 열의 텍스트 정렬을 가운데로 설정하십시오 . 직접 실행 창에서 다음 코드를 작성하고 실행하십시오.

[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

코드를 풀다 :

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

참고 : 글꼴과 색상은 개인적인 선택입니다.


edc65의 제안으로 15 바이트가 절약되었습니다. 감사.

TaylorScott의 제안으로 5 바이트가 절약되었습니다. 감사.


추가 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
또는 [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

펄 6, 75 바이트

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

101
slurp.chomp.comb... 펄은 이상하다.
Mego

14
멍청 아 !!! !!!!!! 빗!! 펄 몬스터가 온다!
stommestack

함수와 연결을 사용하면 많은 것을 잘라낼 수 있습니다. {[~] " |\n /_\\\n",|(" |$_|\n"for $_.comb)," |_|\n/___\\\n VvV"}65 바이트
user0721090601

그러나 JS에서 차용함으로써 더 낮아질 수 있습니다 : tio.run/…
user0721090601

22

자바 스크립트 (ES6), 54

똑바로

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

테스트

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

실제로 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
Cody

전화상에서 SSH에 너무 게 으르므로 테스트되지 않았지만 작동합니다. 2 바이트를 저장합니다 (정확하게 계산 된 경우) :F(char*c){for(puts(" |\n /_\\");*c;printf(" |%c|\n",*c++),puts(" |_|\n/___\\\n VvV");}
algmyr

@algmyr는 마지막 바이트 puts가 매번이 아니라 한 번만 실행 되기 때문에 실제로 1 바이트를 절약 합니다 printf. 그러나 예, 1 바이트가 절약되었습니다.
Stefano Sanfilippo

권리. 내가 자야했을 때 골프를한다고 비난 할 것이다.
algmyr

88 바이트가 아닙니까?
gastropner

10

파이썬 2, 93 66 62 61 바이트

FGITW. 아마도 심하게 골프를 칠 수 있습니다. 제안을 환영합니다.

편집 : Mego 덕분에 27 바이트. TheBikingViking 덕분에 4 바이트. user3030010 덕분에 1 바이트

온라인으로 사용해보십시오!

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 바이트를 더 절약했습니다.
  3. Ismael Miguel 덕분에 : PHP가 "하이퍼 텍스트 전 처리기"라는 사실을 활용하여 7 바이트를 더 절약하여 원하는만큼 많은 텍스트를 출력하고 중간에 코드를 시작할 수 있습니다.

온라인으로 사용해보십시오!

이것은 재미 있었다! :-)

샘플 통화 :

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이 문구는 테러리스트뿐만 아니라 전세계 모든 무슬림들에 의해 사용됩니다. 테러리스트들이 모든 무슬림들을 대표한다고 생각하십니까?
Leaky Nun


8

루비, 57 55 바이트

@manatwork
에서 제안한대로 입력에 줄 바꿈이 없다고 가정하여 -5 바이트-@ValueInk 바꿈없는 입력으로, 예를 들어 제공 할 수 echo -n같이 echo -n hey | ruby rocket.rb.

puts'  |
 /_\
 |'+gets.chars*'|
 |'+'|
 |_|
/___\
 VvV'
이전 버전은 입력 줄 바꿈을 가정합니다.

루비, 62 60 바이트

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

질문 소유자의 의견에 따르면 입력에 개행 문자가 포함되지 않으므로을 (를) 제거 할 수 있습니다 .chop.
manatwork

@manatwork neat, thanks :)
daniero

당신이 따옴표 문자열을 사용하는 경우, 당신은 둘 다 교체 할 수 있어야 \\ \ . (작은 따옴표로 묶인 문자열 \'
Value Ink

7

하스켈, 58 바이트

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

7

망막 , 44 37 바이트

Martin Ender 덕분에 7 바이트.

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

온라인으로 사용해보십시오!


대한 바닥 :(에서 행의 간격 잎 "공간, 최종 국경을."
xQbert

@xQbert 저에게 효과적입니다. TIO 링크를 첨부 할 수 있습니까?
Leaky Nun

이상하게도, 지금은 잘 작동합니다 ... 아아 내 오류는 끝에 줄 바꿈이있었습니다.
xQbert

Retina는 후행 줄 바꿈을 추가하면 프로그램을 완전히 변경할 수있는 유일한 언어입니다.
caird coinheringaahing

6

젤리 , 37 36 바이트

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

기존 항목과 동일한 점수이지만 재미있는 새로운 기능인 ŒB벡터화 버전 인 ŒḄ바운스를 사용합니다. 수신 거부는 목록을 끝까지 실행 한 다음 다시 돌아옵니다. x[:-1]+x[::-1]예 : bounce("codegolf") == "codegolflogedoc".

Dennis 덕분에 -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의 약자입니다 ŒḄ€.
Dennis


5

V , 41, 39 바이트

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

온라인으로 사용해보십시오!

어떤 이유로 온라인 인터프리터가 예기치 않은 결과를 생성했기 때문에 디버그 버전을 훨씬 느리게 실행되는 온라인 인터프리터로 푸시했습니다. 이제 올바른 결과를 얻을 수 있습니다.

이 프로그램에는 인쇄 할 수없는 문자가 포함되어 있으므로 다음은 16 진 덤프입니다.

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

훌륭하지만 "공간, 최후의 개척지"의 공간을 다루지는 않습니다.
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="")

언 골프 :

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로켓의 몸체를 얻기 위해 입력의 각 요소를 숯 배열로 루프 하는 것입니다.

ConnorLSW가 지적한 리터럴 줄 바꿈을 사용하여 일부 바이트를 저장합니다.
Veskah 덕분에 -4 바이트 더.


문자열에 실제 줄 바꿈을 넣어 3을 절약 할 수 있습니다.\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

수학, 50 바이트

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

익명의 기능. 문자 목록을 입력으로 취하고 문자열을 출력으로 리턴합니다.


4

PHP, 108 (100) 88 바이트

비즈니스 고양이 덕분에 -8 바이트

YetiCGN 덕분에 -12 바이트

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

꽤 직설적 인

이데온


1
foreach(str_split($a)as$c)다른 for 루프 대신 사용하여 많은 바이트를 절약 할 수 있습니다 . 또한 큰 따옴표를 사용하면 $ c를 문자열에 직접 넣을 수 있습니다.echo" |$c| ....";
Business Cat

@BusinessCat 사실, 괄호가 해석되지 않아서 큰 따옴표가 배열 스타일의 생각과 함께 작동하지 않아서 감사합니다
Sefa

정규식은 어떻습니까? function f($a){echo' |.␤ /_\\␤',preg_replace('/./',' |$0|␤',$a),' |_|␤/___\\␤ VvV';}
manatwork

1
왜 주변에 기능을 넣었습니까? 교체 $a$argv[1]하고 명령 줄에서 실행하는 그것을 훨씬 짧은 있습니다.
YetiCGN

@manatwork 아마도 유효한 대안 일 것입니다. 그러나 그것을 이해하지 못하고 그것이 나와 같은 정신이 아니기 때문에 게시 할 수 있습니다.
Sefa

4

C #, 106 97 80 74 바이트

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

위의 시도를 할 C # 6이 없지만 작동한다고 생각합니다.

Kevin Cruijssen 덕분에 7 바이트 절약

17 바이트를 절약하기 위해 올바른 방향으로 나를 가리켜 준 manatwork 덕분에

우유 덕분에 6 바이트 절약


+1. Btw, 후행 공백은 선택 사항이므로 다음과 같이 변경할 수 있습니다. using System.Linq;s=>$(" |\n /_\\\n{string.Join("",s.Select(c=>" |"+c+"|\n"))} |_|\n/___\\\n VvV");( 100 bytes )
Kevin Cruijssen

1
@KevinCruijssen 난 그냥 내 이전 답변에 대한 귀하의 의견 후 이것을 업데이트하는 과정에 있었다 :) 도움을 주셔서 감사합니다
TheLethalCoder

리터럴 안에 단일 문자열을 사용하여 일부 문자를 저장할 수 있습니다 Select: " |"+c+"|\n"c+"|\n |"함께 '움직이는 |`후에서 {}그것을하기 전에.
manatwork

@manatwork 나는 그것을 작동시킬 수없는 것
TheLethalCoder

1
줄 바꿈은 2 바이트에 비해 1 \n바이트입니다. 따라서 새 줄로 바꾸면 5 바이트를 더 절약 할 수 있습니다. 예, Visual Studio를 사용하는 경우 기본적으로 줄 바꿈은 2 바이트이지만 16 진수 편집기 (Visual Studio에는 1 개)에서 소스 파일을 열고 캐리지 리턴 문자를 삭제할 수 있습니다. 출력은 여전히 ​​동일합니다.
우유

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)"대신에 올바른 결과를 인쇄하는지 모르겠습니다. 내가 위험을 선호하는 공간 gets () ...
RosLuP

2
게시물을 손상시키지 마십시오. 감사합니다!
NobodyNada


3

05AB1E , 50 47 43 37 바이트

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

온라인으로 사용해보십시오!

Adnan 덕분에 9 바이트를 절약했습니다.


P, 같은 : 문자열은 05AB1E에서 줄 바꿈 받아 들일 수 있습니다 .
Adnan

@Adnan Nice, 감사합니다! 빈 입력을 더 잘 극복하는 방법에 대한 아이디어가 있습니까?
Emigna

IðJ프로그램 시작시 동체의 기초를 포함 하는 접근 방식에 대해 생각 하고있었습니다.
Adnan

@Adnan 좋은 생각입니다. 나는 «많은 운없이 일찍 시도했다 . 그래도 훨씬 좋습니다.
Emigna

제거 U및 교체 Xs도 것은 바이트 :)를 저장합니다.
Adnan

3

코 틀린, 68 바이트

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

꽤 직설적 인. 여러 줄 문자열과 정규식 대체를 사용합니다. 이것은 (String)->String유형 이있는 람다입니다 . 테스트:

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

3

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에게 감사합니다.
manatwork

1
나를 (골프가 아닌) 새로운 언어로 소개해 주신 +1.
Jordan

3

배쉬 84 70

manatwork 덕분에 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~'. 사실은 내가 사용하는 이유 볼 catecho하나를. 순수한 sed솔루션 으로 더 짧아 질 것입니다.
manatwork

순수한 sed를 사용하면 입력이 없으면 출력을 얻지 못합니다
Riley

도 네 말이 맞아 죄송합니다. 요구 사항의 일부를 잊었습니다.
manatwork

@manatwork 저도 첫 시도에서 잊어 버렸습니다.
Riley

나중에 참조 할 수 있도록 <pre> <code> 태그를 사용하지 마십시오. 마크 다운 형식은 자동 이스케이프되므로 앞으로 코드 앞에 4 개의 공백을 사용하십시오. 취소 선으로 인해 현재 서식을 유지했지만 궁금한 점이있는 사용자는 편집 기록에 그대로 둘 수 있습니다.
Addison Crump

3

골프 공, 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

Vim, 41 39 바이트

여기서는 <End>문자 그대로 "End"키입니다.

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

인쇄 할 수없는 것들 :

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

3

GNU sed , 54 49 48 바이트

이것이이 사이트의 도전에 대한 첫 번째 대답이었습니다. 해결책은 간단하고 주로 인쇄하기 때문에 더 이상 골프를 칠 수 없도록 시간을 보냈습니다.

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

루아, 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.