Falcon Ağır etapları


43

Değiştirmeden dört baytlık bir küme seçin (yani, tekrarlanan hiçbir bayt yok) ve aşağıdaki dört kümeden herhangi birinden zorunlu olarak herhangi bir sıraya göre değil:

  1. Herhangi bir tek baytlık kodlamanın karakterleri
  2. 00 - FF aralığındaki Unicode karakterler
  3. İmzalı ondalık tamsayılar −128–127 aralığında
  4. 0–255 aralığında işaretsiz ondalık tam sayıları

Seçtiğiniz dört değer (lütfen hangileri olduklarını belirtiniz) geçerli girdiler olacaktır. Her değeri aşağıdaki ASCII sanat eserlerinden biriyle eşleştirmelisiniz.

Dört geçerli girişinizden birini (herhangi bir şekilde) göz önüne alındığında, karşılık gelen ASCII sanatına cevap verin (herhangi bir şekilde, hatta dizelerin listesi). Görüntü bir bitişik 2B alanda olduğu sürece, her tarafta ekstra boşluk bırakılabilir.

İlk bayt:

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

İkinci bayt:

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

Üçüncü bayt:

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

Dördüncü bayt:

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

Bu ASCII sanat Kolmogorov karmaşıklığı mücadelesinde yeni neler var?

  1. Geçerli girdileri seçebilme yeteneği, mücadelede yeni bir özellik sunar. Girdiler, sonucun tamamını kodlamak için açıkça sınırlı, ancak dikkati çekecek kadar bilgi taşıyabilir.

  2. Mümkün olan çoklu çıkışlar çok sayıda yapıyı paylaşır, bu nedenle kodun veya alt görüntülerin yeniden kullanımı hem görüntülerin içinde hem de görüntüler arasında mümkündür.

  3. Bunun gibi zorluklara karşı iyi donanımlı olmayan dillerin bile yoğun kodlama dizeleri yerine zekice kod kullanma kabiliyetine sahip olma ihtimali oldukça fazladır.


2
db Aston Martin gibi geliyor! AFAIK bu bir Tesla Roadster.
Level River St

1
@ SevelRiverSt Bowie, Kahverengi değil!
Ad'm

Başta / arkada boşluk bırakılıyor, özellikle solda mı?
Seviye Nehri St

@ SevevRiverSt Teşekkürler. Düşünmeme rağmen yazmayı unuttum.
Adám

1
Bu gerçekten animasyon mu?
FantaC

Yanıtlar:


41

JavaScript (ES6), 247 bayt

RegPack'ed. 0 ... 3'ü giriş olarak bekliyor.

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]

Çevrimiçi deneyin!


16
BigFu!#?%$Rocket? Ama bu sadece Falcon Ağır!
Ad'm

16
@ Adám Bu doğru. Ancak BFR.reduce() == FalconHeavy: p
Arnauld

Bu bir dahi. Bir an beklemek gibiydi, bunun için yerleşik bir javascript var mı ?! Sonra hislerime geldim ... +1!
rodolphito

Her zamanki gibi etkileyici.
Weijun Zhou

"FRFRFRF" = "Fu!#?%$RocketFu!#?%$RocketFu!#?%$RocketFu!#"sağ? Bu cevabı her şeyden çok seviyorum lol.
Magic Octopus Urn

13

Kömür , 67 bayt

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

Çevrimiçi deneyin! Bağlantı, kodun ayrıntılı bir versiyonudur. Girişi sayı olarak 3-0 alır. Açıklama:

Nθ

Numarayı giriniz.

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

Eğer 3 ise, yükselticinin yarısını çizin, sonra yansıtın ve roketin ucuna getirin.

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

0 değilse, ön yakıt deposunun sol yarısını çizin.

↓d/_¶ _\

Ama eğer 3 ise, burun konisinin yarısını sola çek.

↓×⁴∨›²θ⁶

Roketin sol tarafını çizin.

¿‹¹θAA↑¶/_‖M

Roketin uygun tabanını çizin ve bitirmek için aynalayın.


Oluşturduğunuz mü Charcoalbu yarışma için sadece?
nielsbot

@nielsbot Charcoal 7 aylık (işlem kayıtlarına bakınız).
phyrfox

Şaka yapıyordum. Ama soruyu gündeme getiriyor: Sorunu çözmek için bir dil oluşturursanız golf oynamak mı? Sınır nerde?
nielsbot

1
@nielsbot Sanırım standart boşluklardan biri olarak sayılıyor .
Neil

7

Temiz , 292 278 273 271 262 261 bayt

Adám sayesinde -5 bayt

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]

Çevrimiçi deneyin!

OP'de listelenen sırayla görüntülere Intdeğerleri eşleyen bir lambda işlevi 0..3.



@ Adám Teşekkürler! Bunu uygulayabildim, ancak daha da kısalttıktan sonra gördüm - yine de baytları kurtarıyor :)
Feburous

Neden iki parçacık var?
Outgolfer Erik

@EriktheOutgolfer ikincisi ise lambdadır. Birincisi, bağlı olduğu koddur. Onları aynı snippet’e koymuyorum çünkü snippet’e bir atama yapıştıramıyorum.
19

5

Python 2 , 292 290 284 282 281 bayt

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

Çevrimiçi deneyin!

Girdi olarak 0 ila 3 arasında bir tamsayı alır ve her çıktısını oluşturmak için liste indekslemeyi (1 veya 0) kullanır.

Gereksiz bir parantez çifti için -2.

-6 Sadece bir kez kullanılan değişken atamasını kaldırarak.

-2 tek kullanımlık değişken için.

@Rod'dan bir ipucu ile -1


1
n, pVe qdeğişken (-2 her bayt) kadar gereksizdir. " db"ve "_/\_"daha sonra birleştirilecek "\n", " db\n_/\_"başka bir baytı kurtarmak için her ikisine de dönüştürebilirsiniz . +yHer bir elemandan (muhtemelen) listeden çıkarabilirsiniz (ve const da kaldırın)(...)[i>2]+["\__/"]
Rod

@Rod \ n ipucu için teşekkürler. Onu özledim. Gerçi n, p ve q hakkında emin değilim. Destekleyicilere ihtiyaç duyulup duyulmadığını belirlemek için ana roketin her iki tarafında birer iki kez kullanılırlar. Eşzamanlı olarak y, bir durumda kendisinden önce newline, diğerinde ise bazı diğer karakterlere ihtiyaç duyar. Dürüst olmak gerekirse, muhtemelen tam bir yeniden yazmadan faydalanabilir. Herhangi bir fikir almaktan çekinmeyin ve kendi yanıtınızı göndermek için bunları kullanın.
ElPedro

5

Ruby , 234 212 205 bayt

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

Çevrimiçi deneyin!

0-3 arasında bir tamsayı alır. Her fazın sol yarısına ait bir dizi oluşturur, indeksler, sonra her bir sırayı doldurur ve yansıtır. Tüm dolgu aynı genişliktedir, bu nedenle ikinci fazlar öndeki boşluklara sahiptir. Bir dizi dizeyi döndürür.

-2 bayt: Daha sonra yihtiyaç duymak yerine hemen bir dizi olarak ilan edin *[y].

-5 bayt: Değiştir x="\\"ile t=%w{_| \\}.

-5 bayt: Daha az ayırma, daha fazla dizi eklemesi.

-1 bayt: h+y*21+[?A*2]-> h+y*21<<?A*21. aşamada.

-3 bayt: Spesifikasyon sonuçlara dahil edilmemesini sağlar *$/.

-4 bayt: ["b","\\_","_/"]-> %w{b \\_ _/}3. aşamada.

-2 bayt: %wAyrıca kafa dizisindeki gösterimi de kullanın .

-7 bayt: rjustElle doldurma yerine kullanın (bu, sağ tarafla başlamak yerine sol tarafın oluşturulması ve yansıtılması anlamına da gelir)

Ungolfed:

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

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

Burada dene!

1/2/3/4 baytlarına karşılık gelen 0/1/2/3 girişleri


2

Ruby , 209 183 bayt

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

Çevrimiçi deneyin!

Gerekli girişler aşağıdaki gibidir:

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

Fikir, centre core + upper stage + fairingvarsayılanı almak ve diğer çıktılar için değiştirmek.

Yorumlananlar

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

Girdilerin önemsiz kullanımı için ilk cevap! Çok hoş.
benj2240

1

Kırmızı , 333 bayt

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

Çevrimiçi deneyin!

Giriş olarak 1 - 4 arası

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 bayt

Rebol'un compressişlevi hakkında bir deney yaptım , tüm 4 aşamadan oluşan bir dizgiyi sıkıştırdım ve sıkıştırmadan sonra ilgili parçasını yazdırdım:

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 bayt

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

açıklama

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

Çevrimiçi deneyin!


0

C (clang) , 421 408 bayt

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

Çevrimiçi deneyin!


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.