팔콘 헤비 스테이지


43

다음 4 가지 세트 중 하나에서 대체하지 않고 (즉, 바이트가 반복되지 않는) 4 바이트 세트를 선택하십시오.

  1. 1 바이트 인코딩의 문자
  2. 00-FF 범위의 유니 코드 문자
  3. −128–127 범위의 부호있는 십진 정수
  4. 0-255 범위의 부호없는 10 진수 정수

선택한 네 개의 값 (있는 그대로 기재하십시오)이 유효한 입력이됩니다. 각 값을 아래 ASCII 아트 워크 중 하나와 쌍을 이루어야합니다.

네 가지 유효한 입력 중 하나를 (어떻게 든) 제공하면 해당 ASCII 아트를 사용하여 (어쨌든 문자열 목록까지) 응답하십시오. 이미지가 하나의 인접한 2D 영역에있는 한 모든면에 추가 공백이 허용됩니다.

첫 바이트 :

     /\
    /  \
   |    |
   |    |
   |    |
   |____|
    \__/
    |  |
    |  |
    |  |
    |  |
 /\ |  | /\
/  \|  |/  \
|  ||  ||  |
|  ||  ||  |
|  ||  ||  |
|  ||  ||  |
|  ||  ||  |
|  ||  ||  |
|  ||  ||  |
|  ||  ||  |
|  ||  ||  |
|  ||  ||  |
|  ||  ||  |
|  ||  ||  |
|  ||  ||  |
|  ||  ||  |
|  ||  ||  |
|  ||  ||  |
|  ||  ||  |
|  ||  ||  |
AAAAAAAAAAAA

두 번째 바이트 :

  /\
 /  \
|    |
|    |
|    |
|____|
 \__/
 |  |
 |  |
 |  |
 |  |
 |  |
 |  |
 |  |
 |  |
 |  |
 |  |
 |  |
 |  |
 |  |
 |  |
 |  |
 |  |
 |  |
 |  |
 |  |
 |  |
 |  |
 |  |
 |  |
 |  |
 AAAA

세번째 바이트 :

  /\
 /  \
|    |
|    |
|    |
|____|
 \__/
 |  |
 |  |
 |  |
 |__|
  /\

네 번째 바이트 :

 db
_/\_
\__/
|  |
|  |
|  |
|__|
 /\

이 ASCII 아트 Kolmogorov 복잡성 문제의 새로운 점은 무엇입니까?

  1. 유효한 입력을 선택할 수있는 기능은 새로운 도전 과제입니다. 입력이 전체 결과를 인코딩하기에는 너무 제한적이지만주의를 기울일만한 충분한 정보를 전달할 수 있습니다.

  2. 여러 개의 가능한 출력은 많은 구조를 공유하므로 각 이미지 내에서 그리고 이미지간에 코드 또는 하위 이미지를 재사용 할 수 있습니다.

  3. 이와 같은 과제에 잘 맞지 않는 언어조차도 문자열을 광범위하게 코딩하는 대신 영리한 코드를 사용할 수있는 공정한 기회가 있다는 중복이 충분합니다.


2
db는 Aston Martin처럼 들립니다! AFAIK 테슬라 로드스터입니다.
레벨 리버 세인트

1
@LevelRiverSt Bowie, 브라운이 아닙니다!
Adám

특히 왼쪽에서 선행 / 후행 공백이 허용됩니까?
Level River St

@LevelRiverSt 감사합니다. 생각은했지만 글을 잊었습니다.
Adám

1
이것이 실제로 애니메이션 입니까?
FantaC

답변:


41

자바 스크립트 (ES6), 247 바이트

RegPack'ed. 입력으로 0 ... 3이 필요합니다.

n=>[...'BigFu!#?%$Rocket'].reduce((s,c)=>(x=s.split(c)).join(x.pop()),`oF#$!
FRFRFRF|??|$i$t$t$t$t%# t #
!t!BBB
uuceeeeeee%c%|?|
o#, db
_#_
iggg
|?|%#g|o|e%t%t%tkgttgttcu,o#%!
RRR|??|%ieF R|oo|
$
oo%
 ?__#/\\!/o\\uAAAAFo g
ti\\?/Bkkk`).split`,`[n]

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


16
BigFu!#?%$Rocket? 그러나 이것은 단지 팔콘 헤비입니다!
Adám

16
@ Adám 맞습니다. 그러나 BFR.reduce() == FalconHeavy: p
Arnauld

이것은 천재입니다. 잠깐 동안 나는 무엇을 기다렸는데, 거기에 자바 스크립트가 내장되어 있습니까?! 그런 다음 감각을 느끼게되었습니다. +1!
rodolphito

그 어느 때보 다 인상적입니다.
Weijun Zhou

"FRFRFRF" = "Fu!#?%$RocketFu!#?%$RocketFu!#?%$RocketFu!#"권리? 나는이 대답을 무엇보다 좋아합니다.
매직 문어 Urn

13

, 67 바이트

NθF⁼³θ«PAA↑↑¹⁸↗²‖MM⁴±χ»¿θ«↙²↓⁴M↗__¶\_¶»↓d/_¶ _\↓×⁴∨›²θ⁶¿‹¹θAA↑¶/_‖M

온라인으로 사용해보십시오! 링크는 자세한 버전의 코드입니다. 숫자를 3-0으로 입력합니다. 설명:

Nθ

숫자를 입력하십시오.

F⁼³θ«PAA↑↑¹⁸↗²‖MM⁴±χ»

3 인 경우 부스터를 반으로 끌어서 미러링 한 다음 로켓 끝으로 이동하십시오.

¿θ«↙²↓⁴M↗__¶\_¶»

0이 아닌 경우 전면 연료 탱크의 왼쪽 절반을 그립니다.

↓d/_¶ _\

그러나 3이면 코 콘의 왼쪽 절반을 그립니다.

↓×⁴∨›²θ⁶

로켓의 왼쪽을 그립니다.

¿‹¹θAA↑¶/_‖M

로켓의 적절한 바닥을 그린 다음 거울로 마무리합니다.


Charcoal이 콘테스트 만 만들었습니까 ?
nielsbot 2014

@nielsbot Charcoal은 (는) 7 개월입니다 (커밋 로그 참조).
phyrfox

내가 농담. 그러나 나는 그것이 문제를 제기한다고 생각합니다 : 문제를 해결할 언어를 만들면 골프입니까? 경계는 어디에 있습니까?
nielsbot 2019

1
@nielsbot 나는 그것이 표준 허점 중 하나라고 생각합니다 .
Neil

7

청소 , 292 278 273 271 262 261 바이트

Adám 덕분에 -5 바이트

import StdEnv,Text
e=[k,k,k,"|__|",m]
l=repeatn
o="\\__/"
n="/  \\"
m="/\\"
u="|    |"
s="AAAA"
k="|  |"
?z=[m,n,u,u,u,"|____|",o:z]

\i=[cjustify 12[c\\c<-:q]\\q<-[?[k,k,k,k,m+" "+k+" "+m,n+k+n,k+k+k:l 18(k+k+k)]++[s+s+s],?(l 24k++[s]),?e,["db","_/\\_",o:e]]!!i]

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

OP에 나열된 순서대로 Int0..3을 이미지에 매핑하는 람다 함수 입니다.



@ Adám 감사합니다! 나는 그것을 적용 할 수 있었지만, 그것을 더 줄인 후에 만 ​​그것을 보았습니다. 여전히 바이트를 절약합니다 :)
Οurous

어, 왜 두 개의 스 니펫이 있습니까?
Erik the Outgolfer

@EriktheOutgolfer 두 번째는 람다입니다. 첫 번째는 의존하는 코드입니다. 스 니펫에 과제를 여러 줄로 묶을 수 없기 때문에 동일한 스 니펫에 넣지 않습니다.
OUurous

5

파이썬 2 , 292 290 284 282 281 바이트

i,j,d,e,x,y=input()," "," /\\ ","/  \\","|  |","\__/"
f=i<1
l,m,n,p,q,s=3*f*j,j*(i<3),d*f,e*f,x*f,j*(i>0)
print"\n".join(([l+j+d,l+j+e]+[l+"|    |"]*3+[l+"|____|",l+j+y],[" db\n_/\_",y])[i>2]+([l+j+x]*4+[n+s+x+n,p+s+x+p]+[q+s+x+q]*18+[s+"A"*(4,12)[f]],[m+x]*3+[m+"|__|",m+d])[i>1])

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

입력으로 정수 0-3을 취하고 목록 색인 작성 (1 또는 0)을 사용하여 각 출력을 빌드하십시오.

불필요한 괄호 쌍의 경우 -2입니다.

한 번만 사용 된 변수 할당을 제거하여 -6.

다른 단일 사용 변수의 경우 -2입니다.

@Rod의 팁이있는 -1


1
n, pq변수 (-2 각 바이트)도 불필요하다. " db""_/\_"합류됩니다 "\n"후, 당신은으로 모두를 설정할 수 있습니다 " db\n_/\_"다른 바이트 저장합니다. 당신은 (아마도) +y각 요소에서 목록 밖으로 (그리고 const도 제거) 다음과 같이 이동할 수 있습니다(...)[i>2]+["\__/"]
Rod

@Rod \ n 팁에 감사드립니다. 나는 그 것을 놓쳤다. 그래도 n, p 및 q는 확실하지 않습니다. 부스터가 필요한지 여부를 정의하기 위해 메인 로켓의 각 측면에 하나씩 두 번 사용됩니다. Simailarly y는 어떤 경우에는 개행이 필요하고 다른 경우에는 다른 문자가 필요합니다. 정직하게 다시 작성하면 도움이 될 것입니다. 아이디어를 자유롭게 활용하여 자신의 답변을 게시하십시오.
ElPedro

5

루비 , 234 (212) 205 바이트

->n{y=*"| "
h=%w{/ /\ }+["|  "]*3+%w{|__ \\_}+y*3
t=%w{|_ /}
[h+["| ","/\\ | ","/  \\| ",*["|  || "]*18,?A*6],h+y*21<<?A*2,h+t,%w{d _/ \\_}+y*3+t][n].map{|a|a.rjust(6," ")+a.reverse.tr("\\\\/d","/\\\\b")}}

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

정수 0-3을 사용합니다. 각 단계의 왼쪽 절반 배열을 만들고 색인을 생성 한 다음 각 행을 채우고 반영합니다. 모든 패딩의 너비는 동일하므로 후자의 단계에는 공백이 있습니다. 문자열 배열을 반환합니다.

-2 바이트 : 나중에 y필요하지 않고 바로 배열로 선언하십시오 *[y].

-5 바이트 : 교체 x="\\"와 함께 t=%w{_| \\}.

-5 바이트 : 더 적은 참조, 더 많은 배열 추가.

-1 바이트 : h+y*21+[?A*2]-> h+y*21<<?A*21 단계.

-3 바이트 : 스펙을 사용 *$/하면 결과에 참여하지 않아도됩니다.

-4 바이트 : ["b","\\_","_/"]-> %w{b \\_ _/}3 단계

-2 바이트 : %w헤드 배열에서도 표기법을 사용하십시오 .

-7 바이트 : rjust수동 패딩 대신 사용 (오른쪽으로 시작하는 대신 왼쪽을 생성하고 미러링 함을 의미 함)

언 골프 드 :

->n{
  y=*"| "                                            # Same as y=[" |"]
  h=%w{/ /\ }+["|  "]*3+%w{|__ \\_}+y*3              # Head for phases 0-2
  t=%w{|_ /}                                         # Tail for phases 2,3
  [
    h+["| ","/\\ | ","/  \\| ",*["|  || "]*18,?A*6], # Phase 0
    h+y*21<<?A*2,                                    # Phase 1
    h+t,                                             # Phase 2
    %w{d _/ \\_}+y*3+t                               # Phase 3
  ][n].map{|a|                                       # Choose phase
    a.rjust(6," ") +                                 # Pad left to width 6
    a.reverse.tr("\\\\/d","/\\\\b")                  # Add mirror (right side)
  }
}


2

루비 , 209 183 바이트

->n{z=[a=' /\\ ',b='/  \\']+['|    |']*3+%w{|____| \__/}+[c='|  |']*24+[?A*n]
n>4&&z[10..-n/6]=n>8?[c,a+c+a,b+c+b]+[c*3]*18:['|__|',a]
n==5&&z[0,6]=%w{db _/\_}
z.map{|i|i.center(12)}}

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

다음과 같은 필수 입력 :

Centre core + upper stage + fairing: 4
As above + boosters : 12
Upper stage + fairing: 6
Upper stage without fairing 5

아이디어는 centre core + upper stage + fairing기본값을 사용하여 다른 출력에 맞게 수정하는 것입니다.

댓글

->n{
  #z = array of parts for centre core + upper stage + fairing, with n A's at the bottom
  z=[a=' /\\ ',b='/  \\']+['|    |']*3+%w{|____| \__/}+[c='|  |']*24+[?A*n]

  #if n not 4, z from element 10 to the last [10..-1] or last but one [10..-2] =
  n>4&&z[10..-n/6]=
    n>8?[c,a+c+a,b+c+b]+[c*3]*18:   #centre core + boosters#
    ['|__|',a]                      #upper stage engine
  n==5&&z[0,6]=%w{db _/\_}        #if n==5, replace first 6 elements with unfaired payload
  z.map{|i|i.center(12)}          #pad each element of array to 12 characters
}                                 #return array of strings (format allowed by question)

입력을 사소하게 사용하는 첫 번째 답변! 아주 좋아요
benj2240

1

빨강 , 333 바이트

f: func[g][t:{    }b:{ /\ }c:{/  \}d:{   |}e:{|}j:{\__/}k:{|  |}a:{AAAA}h:[1[t b]1[t c]3[d t e]1[d{____}e]1[t j]]z:[3[t k]1[t{|__|}]1[t b]]r: func[w][foreach[i v]w[loop i[print rejoin v]]]switch g[1 do[r h r[4[t k]1[b k b]1[c k c]18[k k k]]r[1[a a a]]]2 do[r h r[24[t k]]r[1[t a]]]3 do[r h r z]4 do[r[1[t{ db}]1[t{_/\_}]1[t j]]r z]]]

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

입력 값으로 1-4를 사용합니다

f: func [ g ] [
    t: {    }
    b: { /\ }
    c: {/  \}
    d: {   |}
    e: {|}
    j: {\__/}
    k: {|  |}
    a: {AAAA} 
    h: [1 [t b] 1 [t c] 3 [d t e] 1 [d {____} e ] 1 [t j]]
    z: [3 [t k] 1 [t {|__|}] 1 [t b]]
    r: func [ w ] [
        foreach [ i v ] w [
            loop i [print rejoin v]]]
    switch g [
        1 do [r h r [4 [t k] 1 [b k b] 1 [c k c] 18 [k k k]] r [1 [a a a]]]
        2 do [r h r [24 [t k]] r [1 [t a]]]
        3 do [r h r z]
        4 do [r [ 1 [t { db}] 1 [t {_/\_}] 1 [t j] ] r z]
    ]
]

리볼 , 258 바이트

나는 compress4 단계 모두의 문자열을 압축하고 압축 해제 후 해당 부분을 인쇄하여 Rebol 기능을 실험 했습니다.

f: func[n][o:[[1 374][374 196][570 74][644 37]]
b: decompress debase{eJzjUgAB/RguMKWgAGbUgDg1OFnxQABmKcTEx+uDGTVQOZwM/RgwA2QTyBYQG2wbiAHDw5vjiAS4IEEOCwGoWmQKGsaQAIYE4eAhqeMFSCICGZKSxBWvHxPPBVYKDzkoAVamHwMAjkWmoKkCAAA=}
repeat i o/(n)/2[prin b/(i + o/(n)/1)]]

 f 3
  /\
 /  \
|    |
|    |
|    |
|____|
 \__/
 |  |
 |  |
 |  |
 |__|
  /\

1

JSTX , 124 바이트

↕t▌ÇÇÉÇ~éÇÇÇÇÇÇÇÉΘçK↑ε♀▄ü╙Çz⌡"#ße┐é+\òEhZ█╣S♪[ƒuø>!f♪K▌;0♂9☺}ås══½☻eP▌◙&£óZß:&╝af$V≈-wº[√D(♪╘Pφó√ò▲¶>å⌡◘├^∟z◘αßj◙÷»|æ⌠┼øk&£b

설명

↕t▌ÇÇÉÇ~éÇÇÇÇÇÇÇÉΘçK↑ε♀▄ü╙Çz⌡"#ße┐é+\òEhZ█╣S♪[ƒuø>!f♪K▌;0♂9☺}ås══½☻eP▌◙&£óZß:&╝af$V≈-wº[√D(♪╘Pφó√ò▲¶>å⌡◘├^∟z◘αßj◙÷»|æ⌠┼ # Push literal      /\\n    /  \\n   |    |\n   |    |\n   |    |\n   |____|\n    \__/\n    |  |\n    |  |\n    |  |\n    |  |\n /\ |  | /\\n/  \|  |/  \\n|  ||  ||  |\n|  ||  ||  |\n|  ||  ||  |\n|  ||  ||  |\n|  ||  ||  |\n|  ||  ||  |\n|  ||  ||  |\n|  ||  ||  |\n|  ||  ||  |\n|  ||  ||  |\n|  ||  ||  |\n|  ||  ||  |\n|  ||  ||  |\n|  ||  ||  |\n|  ||  ||  |\n|  ||  ||  |\n|  ||  ||  |\n|  ||  ||  |\nAAAAAAAAAAAA0\n  /\\n /  \\n|    |\n|    |\n|    |\n|____|\n \__/\n |  |\n |  |\n |  |\n |  |\n |  |\n |  |\n |  |\n |  |\n |  |\n |  |\n |  |\n |  |\n |  |\n |  |\n |  |\n |  |\n |  |\n |  |\n |  |\n |  |\n |  |\n |  |\n |  |\n |  |\n AAAA0\n  /\\n /  \\n|    |\n|    |\n|    |\n|____|\n \__/\n |  |\n |  |\n |  |\n |__|\n  /\0\n db\n_/\_\n\__/\n|  |\n|  |\n|  |\n|__|\n /\
ø                                                                                                                       # Push literal 0
k                                                                                                                       # Push a list of strings obtained by splitting the second stack value with the first stack value.
&                                                                                                                       # Swap the top two stack values.
£b                                                                                                                      # Push the value in the list of the second stack value at the index of the first stack value.

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


0

C (연타) , 421 (408) 바이트

r,d,i;f(t){char *s="    ",*e="\n",*l[]={" /\\ ","/  \\","|    |","|____|","\\__/","|  |","AAAA","|__|"," /\\ ","_/\\_","\n"," db","|  ||  ||  |"},*p[]={"VABU3C1DVE8FFF1G","VABU3C1DVE4F1RYAFAKBFBKZ9MM1YGGG","VABU3C1DVE3F1HI","VLJE3F1HI"},*a="",*b,*c=e,*q=p[t];for(r=1;d=*q++;r=(d/48&&57/d)?d-48:r,c=(d/89&&90/d)?e+90-d:c,a=(d/82&&86/d)?s+86-d:a)if(d/65&&77/d)for(b=l[d-65],i=0;i<r;i++)printf("%s%s%s",a,b,c);}

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


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.