Tahap berat Falcon

43

Pilih satu set empat byte tanpa penggantian (yaitu tidak ada byte yang diulang), dan tidak harus dalam urutan tertentu, dari salah satu dari empat set berikut:

  1. Karakter dari setiap pengodean satu byte tunggal
  2. Karakter Unicode dalam kisaran 00 – FF
  3. Bilangan bulat desimal yang ditandatangani dalam kisaran −128–127
  4. Bilangan bulat desimal tak bertanda di kisaran 0-255

Keempat nilai yang Anda pilih (sebutkan mana mereka) akan menjadi input yang valid. Anda harus memasangkan setiap nilai dengan salah satu karya seni ASCII di bawah ini.

Dengan (dengan cara apa pun) salah satu dari empat input Anda yang valid, tanggapi (dengan cara apa pun, bahkan daftar string) dengan seni ASCII yang sesuai. Ruang putih ekstra diperbolehkan di semua sisi, selama gambar ada di satu area 2D yang bersebelahan.

Byte pertama:

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

Byte kedua:

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

Byte ketiga:

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

Byte keempat:

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

Apa yang baru tentang tantangan kompleksitas seni ASCII Kolmogorov ini?

  1. Kemampuan untuk memilih input yang valid menghadirkan aspek baru untuk tantangan. Input jelas terlalu terbatas untuk menyandikan seluruh hasil, tetapi dapat membawa informasi yang cukup untuk mendapat perhatian.

  2. Berbagai kemungkinan keluaran memiliki banyak struktur, sehingga penggunaan kembali kode atau sub-gambar layak dilakukan di dalam setiap gambar dan di antara gambar.

  3. Ada duplikasi yang cukup bahwa bahkan bahasa yang tidak diarahkan dengan baik terhadap tantangan seperti ini memiliki peluang yang adil untuk dapat menggunakan kode pintar daripada hanya string hard-coding secara luas.

Adm
sumber
2
db terdengar seperti Aston Martin! AFAIK itu Roadster Tesla.
Level River St
1
@LevelRiverSt Bowie, bukan Brown!
Adám
Apakah spasi putih memimpin / trailing diperbolehkan, khususnya di sebelah kiri?
Level River St
@LevelRiverSt Terima kasih. Saya lupa menulisnya, meskipun saya memikirkannya.
Adám
1
Apakah ini benar-benar animasi ?
FantaC

Jawaban:

41

JavaScript (ES6), 247 byte

RegPack'ed. Diharapkan 0 ... 3 sebagai input.

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]

Cobalah online!

Arnauld
sumber
16
BigFu!#?%$Rocket? Tapi ini hanya Falcon Heavy!
Adám
16
@ Adám Benar. Tetapi BFR.reduce() == FalconHeavy: p
Arnauld
Ini jenius. Untuk sesaat aku seperti menunggu apa, ada javascript bawaan untuk itu ?! Lalu saya sadar ... +1!
rodolphito
Mengesankan seperti biasa.
Weijun Zhou
"FRFRFRF" = "Fu!#?%$RocketFu!#?%$RocketFu!#?%$RocketFu!#"kanan? Saya suka jawaban ini lebih dari apa pun lol.
Magic Gurita Guci
13

Arang , 67 byte

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

Cobalah online! Tautan adalah untuk mengucapkan versi kode. Mengambil input sebagai angka 3-0. Penjelasan:

Nθ

Masukkan nomor.

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

Jika angka 3, gambar setengah booster, lalu mirror, lalu pindah ke ujung roket.

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

Jika bukan 0, gambarkan separuh kiri tangki bahan bakar depan.

↓d/_¶ _\

Tetapi jika angka 3, gambar setengah dari ujung kerucut hidung.

↓×⁴∨›²θ⁶

Gambarlah sisi kiri roket.

¿‹¹θAA↑¶/_‖M

Gambarlah dasar roket yang sesuai dan kemudian cermin untuk menyelesaikannya.

Neil
sumber
Apakah Anda membuat Charcoalhanya untuk kontes ini?
nielsbot
@nielsbot Charcoal berusia 7 bulan (lihat log komit).
phyrfox
Saya bercanda. Tapi saya kira itu menimbulkan pertanyaan: apakah bermain golf jika Anda membuat bahasa untuk menyelesaikan masalah? Dimana perbatasannya?
nielsbot
1
@nielsbot Saya pikir itu dianggap sebagai salah satu celah standar .
Neil
7

Bersih , 292 278 273 271 262 261 byte

-5 byte terima kasih kepada 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]

Cobalah online!

Fungsi lambda, memetakan Intnilai 0..3ke gambar dalam urutan yang tercantum dalam OP.

Suram
sumber
1
287
Adám
@ Adam Terima kasih! Saya dapat menerapkannya, tetapi saya hanya melihatnya setelah saya mempersingkat lebih lanjut - masih menghemat byte :)
Feburous
Eh, kenapa ada dua cuplikan?
Erik the Outgolfer
@EriktheOutgolfer yang kedua adalah lambda. Yang pertama adalah kode yang tergantung padanya. Saya tidak menempatkan mereka dalam cuplikan yang sama karena saya tidak dapat melakukan multiline penugasan ke dalam cuplikan.
Kamis
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])

Cobalah online!

Mengambil bilangan bulat 0 hingga 3 sebagai input dan menggunakan pengindeksan daftar (1 atau 0) untuk membangun setiap output.

-2 untuk pasangan kurung yang tidak dibutuhkan.

-6 dengan menghapus tugas variabel yang hanya digunakan sekali.

-2 untuk variabel penggunaan tunggal lainnya.

-1 dengan tip dari @Rod

ElPedro
sumber
1
The n, pdan qvariabel yang tidak perlu terlalu (-2 byte masing-masing). " db"dan "_/\_"akan bergabung "\n"nanti, Anda dapat mengubah keduanya menjadi " db\n_/\_"untuk menyimpan byte lain. Anda dapat (mungkin) memindahkan +y, dari setiap elemen, keluar dari daftar (dan menghapus const juga) sesuatu seperti(...)[i>2]+["\__/"]
Rod
@Rod Terima kasih atas tipnya. Saya merindukan yang itu. Tidak yakin tentang n, p dan q. Mereka digunakan masing-masing dua kali, masing-masing satu sisi roket utama untuk menentukan apakah booster diperlukan atau tidak. Demikian pula y dalam satu kasus perlu baris baru sebelum dan dalam kasus lain beberapa karakter lain. Mungkin bisa mendapat manfaat dari penulisan ulang yang lengkap untuk jujur. Silakan mengambil ide apa pun darinya dan menggunakannya untuk mengirim jawaban Anda sendiri.
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")}}

Cobalah online!

Membawa bilangan bulat 0-3. Buat array dari setengah bagian kiri dari setiap fase, indeks, kemudian pad dan mencerminkan setiap baris. Semua padding adalah dengan lebar yang sama, sehingga fase terakhir memiliki spasi putih terkemuka. Mengembalikan array string.

-2 bytes: Segera deklarasikan ysebagai array daripada membutuhkan *[y]nanti.

-5 byte: Ganti x="\\"dengan t=%w{_| \\}.

-5 byte: Kurang dereferencing, penambahan array lebih banyak.

-1 byte: h+y*21+[?A*2]-> h+y*21<<?A*2dalam fase 1.

-3 byte: Spesifikasi memungkinkan penghilangan *$/untuk bergabung dengan hasil.

-4 byte: ["b","\\_","_/"]-> %w{b \\_ _/}dalam fase 3.

-2 byte: Gunakan %wnotasi di head array juga.

-7 bytes: Gunakan rjustsebagai ganti padding manual (ini juga berarti menghasilkan sisi kiri dan mirroring, alih-alih memulai dengan sisi kanan)

Tidak Disatukan:

->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)
  }
}
benj2240
sumber
2

SOGL V0.12 , 90 byte

┐∙2╚;+ƨA+.1>?jj■|_ /√+}R
3<?'».1>⌡9R"    kΓC+SA}‘03ž}.‽'⁴R╬³2±6«ž}.3=?4R╬³"XƧ⁸│\׀2⁴‘4n10žP}╬³

Coba Di Sini!

Input 0/1/2/3 sesuai dengan byte 1/2/3/4

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

Cobalah online!

Input yang diperlukan sebagai berikut:

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

Idenya adalah untuk mengambil centre core + upper stage + fairingsebagai default dan memodifikasinya untuk output lainnya.

Berkomentar

->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)
Level River St
sumber
Jawaban pertama untuk menggunakan input yang tidak sepele! Sangat bagus.
benj2240
1

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

Cobalah online!

Mengambil 1 - 4 sebagai input

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

Saya membuat percobaan dengan compressfungsi Rebol , mengompresi string semua 4 tahap dan mencetak bagian yang sesuai setelah dekompresi:

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
  /\
 /  \
|    |
|    |
|    |
|____|
 \__/
 |  |
 |  |
 |  |
 |__|
  /\
Galen Ivanov
sumber
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

Penjelasan

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

Cobalah online!

Quantum64
sumber
0

C (dentang) , 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);}

Cobalah online!

GPS
sumber
383 byte
ceilingcat