Falcon giai đoạn nặng


43

Chọn một bộ bốn byte mà không cần thay thế (nghĩa là không có byte lặp lại) và không nhất thiết phải theo bất kỳ thứ tự cụ thể nào, từ bất kỳ một trong bốn bộ sau đây:

  1. Các ký tự của bất kỳ một mã hóa byte đơn
  2. Các ký tự Unicode trong phạm vi 00 FF FF
  3. Các số nguyên thập phân đã ký trong phạm vi −128 Mạnh127
  4. Các số nguyên thập phân không dấu trong phạm vi 0 Hay255

Bốn giá trị bạn đã chọn (vui lòng nêu rõ chúng là) sẽ là các đầu vào hợp lệ. Bạn phải ghép từng giá trị với một trong những tác phẩm nghệ thuật ASCII dưới đây.

Đưa ra (bằng bất kỳ phương tiện nào) một trong bốn đầu vào hợp lệ của bạn, trả lời (bằng bất kỳ phương tiện nào, thậm chí là danh sách các chuỗi) với nghệ thuật ASCII tương ứng. Không gian trắng thêm được phép ở tất cả các phía, miễn là hình ảnh ở đó trong một khu vực 2D liền kề.

Byte đầu tiên:

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

Byte thứ hai:

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

Byte thứ ba:

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

Byte thứ tư:

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

Có gì mới về thử thách phức tạp Kolmogorov nghệ thuật ASCII này?

  1. Khả năng chọn đầu vào hợp lệ thể hiện một khía cạnh mới cho thách thức. Các đầu vào rõ ràng là quá giới hạn để mã hóa toàn bộ kết quả, nhưng có thể mang đủ thông tin để thu hút sự chú ý.

  2. Nhiều kết quả đầu ra có thể chia sẻ rất nhiều cấu trúc, vì vậy việc sử dụng lại mã hoặc hình ảnh phụ là khả thi cả trong mỗi hình ảnh và giữa các hình ảnh.

  3. Có đủ sự trùng lặp rằng ngay cả các ngôn ngữ không hướng đến các thách thức như thế này cũng có cơ hội sử dụng mã thông minh thay vì chỉ sử dụng các chuỗi mã hóa rộng rãi.


2
db nghe giống như một chiếc Martin Martin! AFAIK đó là một chiếc Tesla Roadster.
Cấp sông St

1
@LevelRiverSt Bowie, không phải Brown!
Adám

Là khoảng trắng hàng đầu / dấu được cho phép, đặc biệt là ở bên trái?
Cấp sông St

@LevelRiverSt Cảm ơn. Tôi quên viết nó, mặc dù tôi đã nghĩ về nó.
Adám

1
Đây thực sự là hoạt hình ?
FantaC

Câu trả lời:


41

JavaScript (ES6), 247 byte

Gói lại. Yêu cầu 0 ... 3 làm đầu vào.

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]

Hãy thử trực tuyến!


16
BigFu!#?%$Rocket? Nhưng đây chỉ là Falcon Nặng!
Adám

16
@ Adám Đúng vậy. Nhưng BFR.reduce() == FalconHeavy: p
Arnauld

Đây là thiên tài. Trong một giây, tôi như chờ đợi điều gì, có một javascript dựng sẵn cho điều đó?! Sau đó, tôi đã cảm nhận được ... +1!
Rodolphito

Ấn tượng hơn bao giờ hết.
Weijun Chu

"FRFRFRF" = "Fu!#?%$RocketFu!#?%$RocketFu!#?%$RocketFu!#"đúng? Tôi thích câu trả lời này hơn bất cứ điều gì lol.
Bạch tuộc ma thuật Urn

13

Than , 67 byte

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

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Lấy đầu vào là một số 3-0. Giải trình:

Nθ

Nhập số.

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

Nếu là 3, rút ​​một nửa bộ tăng áp, sau đó phản chiếu nó, sau đó di chuyển đến đầu tên lửa.

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

Nếu nó không bằng 0, hãy vẽ nửa bên trái của bình nhiên liệu phía trước.

↓d/_¶ _\

Nhưng nếu là 3, hãy vẽ một nửa bên trái của hình nón.

↓×⁴∨›²θ⁶

Vẽ bên trái của tên lửa.

¿‹¹θAA↑¶/_‖M

Vẽ cơ sở thích hợp của tên lửa và sau đó gương để hoàn thành.


Bạn đã tạo ra Charcoalchỉ cho cuộc thi này?
nielsbot

@nielsbot Than được 7 tháng tuổi (xem nhật ký cam kết).
phyrfox

Tôi đã đùa. Nhưng tôi đoán nó đặt ra câu hỏi: có phải là chơi golf nếu bạn tạo ra một ngôn ngữ để giải quyết vấn đề? Ranh giới ở đâu?
nielsbot

1
@nielsbot Tôi nghĩ rằng đó là một trong những sơ hở tiêu chuẩn .
Neil

7

Sạch sẽ , 292 278 273 271 262 261 byte

-5 byte nhờ Adám

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]

Hãy thử trực tuyến!

Hàm lambda, ánh xạ các Intgiá trị 0..3vào hình ảnh theo thứ tự được liệt kê trong OP.



@ Adám Cảm ơn! Tôi đã có thể áp dụng điều đó, nhưng tôi chỉ thấy nó sau khi tôi đã rút ngắn nó hơn nữa - vẫn tiết kiệm byte dù :)
Οurous

Uh, tại sao có hai đoạn?
Erik the Outgolfer 7/218

@EriktheOutgolfer cái thứ hai là lambda. Đầu tiên là mã nó phụ thuộc vào. Tôi không đặt chúng vào cùng một đoạn bởi vì tôi không thể đa nhiệm một bài tập vào đoạn trích.
Οurous

5

Python 2 , 292 290 284 282 281 byte

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

Hãy thử trực tuyến!

Lấy một số nguyên 0 đến 3 làm đầu vào và sử dụng lập chỉ mục danh sách (1 hoặc 0) để xây dựng mỗi đầu ra.

-2 cho một cặp dấu ngoặc không cần thiết.

-6 bằng cách loại bỏ một phép gán biến chỉ được sử dụng một lần.

-2 cho một biến sử dụng duy nhất.

-1 với một mẹo từ @Rod


1
Các n, pqcác biến là không cần thiết quá (-2 byte mỗi). " db""_/\_"sẽ được nối với "\n"sau, bạn có thể biến cả hai " db\n_/\_"để lưu một byte khác. Bạn có thể (có thể) di chuyển +y, từ mỗi thành phần ra khỏi danh sách (và loại bỏ cả const) giống như(...)[i>2]+["\__/"]
Rod

@Rod Cảm ơn vì mẹo \ n. Tôi đã bỏ lỡ cái đó Không chắc chắn về n, p và q mặc dù. Chúng được sử dụng hai lần mỗi lần, mỗi bên một tên lửa chính để xác định xem tên lửa đẩy có cần thiết hay không. Simailarly y trong một trường hợp cần dòng mới trước nó và trong trường hợp khác một số nhân vật khác. Có lẽ có thể được hưởng lợi từ việc viết lại hoàn toàn thành trung thực. Hãy lấy bất kỳ ý tưởng nào từ nó và sử dụng chúng để đăng câu trả lời của riêng bạn.
ElPedro

5

Ruby , 234 212 205 byte

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

Hãy thử trực tuyến!

Lấy một số nguyên 0-3. Xây dựng một mảng các nửa bên trái của mỗi pha, lập chỉ mục, sau đó đệm và phản ánh từng hàng. Tất cả các phần đệm đều có cùng chiều rộng, vì vậy các pha sau có khoảng trắng hàng đầu. Trả về một chuỗi các chuỗi.

-2 byte: Khai báo ydưới dạng một mảng ngay lập tức thay vì cần *[y]sau này.

-5 byte: Thay thế x="\\"bằng t=%w{_| \\}.

-5 byte: Ít hội thảo hơn, thêm mảng.

-1 byte: h+y*21+[?A*2]-> h+y*21<<?A*2trong giai đoạn 1.

-3 byte: Thông số kỹ thuật cho phép bỏ qua *$/kết nối.

-4 byte: ["b","\\_","_/"]-> %w{b \\_ _/}trong giai đoạn 3.

-2 byte: Cũng sử dụng %wký hiệu trong mảng đầu.

-7 byte: Sử dụng rjustthay vì đệm thủ công (điều này cũng có nghĩa là tạo bên trái và phản chiếu nó, thay vì bắt đầu với bên phải)

Ung dung:

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

Ruby , 209 183 byte

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

Hãy thử trực tuyến!

Yêu cầu đầu vào như sau:

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

Ý tưởng là lấy centre core + upper stage + fairingmặc định và sửa đổi nó cho các đầu ra khác.

Đã bình luận

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

Câu trả lời đầu tiên để sử dụng đầu vào không tầm thường! Rất đẹp.
benj2240

1

Màu đỏ , 333 byte

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]]]

Hãy thử trực tuyến!

Mất 1 - 4 làm đầu vào

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]
    ]
]

Rebol , 258 byte

Tôi đã thực hiện một thử nghiệm với compresschức năng của Rebol , nén một chuỗi gồm cả 4 giai đoạn và in phần tương ứng của nó sau khi giải nén:

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 byte

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

Giải trình

↕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.

Hãy thử trực tuyến!


0

C (tiếng kêu) , 421 408 byte

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

Hãy thử trực tuyến!


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.