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.


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!


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.


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.



@ 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


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

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


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)

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

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!


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!


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.