Falcon Heavy Bühnen


43

Wählen Sie einen Satz von vier Bytes ohne Ersetzung (dh ohne Byte-Wiederholung) und nicht unbedingt in einer bestimmten Reihenfolge aus einem der folgenden vier Sätze:

  1. Die Zeichen einer Einzelbyte-Codierung
  2. Die Unicode-Zeichen im Bereich 00 – FF
  3. Die vorzeichenbehafteten Dezimalzahlen im Bereich von −128–127
  4. Die vorzeichenlosen Dezimalzahlen im Bereich von 0 bis 255

Die vier von Ihnen gewählten Werte (bitte geben Sie an, welche es sind) sind die gültigen Eingaben. Sie müssen jeden Wert mit einem der folgenden ASCII-Kunstwerke koppeln.

Beantworten Sie (mit allen Mitteln) eine Ihrer vier gültigen Eingaben (mit allen Mitteln sogar eine Liste von Zeichenfolgen) mit der entsprechenden ASCII-Grafik. Zusätzlicher Leerraum ist auf allen Seiten zulässig, solange sich das Bild in einem zusammenhängenden 2D-Bereich befindet.

Erstes Byte:

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

Zweites Byte:

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

Drittes Byte:

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

Viertes Byte:

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

Was ist neu an dieser ASCII-Kunst-Kolmogorov-Komplexitätsherausforderung?

  1. Die Möglichkeit, gültige Eingaben auszuwählen, stellt einen neuen Aspekt der Herausforderung dar. Die Eingaben sind eindeutig zu begrenzt, um das gesamte Ergebnis zu codieren, können jedoch genügend Informationen enthalten, um Aufmerksamkeit zu verdienen.

  2. Die mehreren möglichen Ausgaben haben eine große Struktur, sodass die Wiederverwendung von Code oder Unterbildern sowohl innerhalb jedes Bildes als auch zwischen Bildern möglich ist.

  3. Es gibt genug Vervielfältigungen, so dass selbst Sprachen, die auf solche Herausforderungen nicht gut vorbereitet sind, durchaus in der Lage sind, cleveren Code zu verwenden und nicht nur Zeichenfolgen ausgiebig hart zu codieren.


2
db klingt wie ein Aston Martin! AFAIK ist ein Tesla Roadster.
Level River St

1
@LevelRiverSt Bowie, nicht Brown!
Adám

Dürfen Leerzeichen vor- und nachgestellt werden, insbesondere links?
Level River St

@LevelRiverSt Danke. Ich habe vergessen, es zu schreiben, obwohl ich darüber nachgedacht habe.
Adám

1
Ist das wirklich Animation ?
FantaC

Antworten:


41

JavaScript (ES6), 247 Byte

RegPack'ed. Erwartet 0 ... 3 als Eingabe.

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]

Probieren Sie es online!


16
BigFu!#?%$Rocket? Aber das ist nur Falcon Heavy!
Adám

16
@Adam Das stimmt. Aber BFR.reduce() == FalconHeavy: p
Arnauld

Das ist Genie. Für eine Sekunde war ich wie warte was, gibt es ein Javascript dafür eingebaut ?! Dann bin ich zur Besinnung gekommen ... +1!
Rodolphito

Beeindruckend wie immer.
Weijun Zhou

"FRFRFRF" = "Fu!#?%$RocketFu!#?%$RocketFu!#?%$RocketFu!#"richtig? Ich liebe diese Antwort mehr als alles andere lol.
Magic Octopus Urn

13

Kohle , 67 Bytes

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

Probieren Sie es online! Link ist eine ausführliche Version des Codes. Nimmt die Eingabe als Nummer 3-0. Erläuterung:

Nθ

Geben Sie die Nummer ein.

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

Wenn es 3 ist, ziehe den halben Booster, spiegele ihn und bewege dich zur Spitze der Rakete.

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

Wenn es nicht 0 ist, ziehen Sie die linke Hälfte des vorderen Kraftstofftanks.

↓d/_¶ _\

Aber wenn es 3 ist, ziehen Sie die linke Hälfte des Nasenkegels.

↓×⁴∨›²θ⁶

Zeichne die linke Seite der Rakete.

¿‹¹θAA↑¶/_‖M

Zeichnen Sie die entsprechende Basis der Rakete und spiegeln Sie sie zum Abschluss.


Hast du Charcoalnur für diesen Wettbewerb erstellt?
Nielsbot

@nielsbot Charcoal ist 7 Monate alt (siehe Commit-Protokoll).
Phyrfox

Ich habe gescherzt. Aber ich denke, es wirft die Frage auf: Ist es Golf, wenn Sie eine Sprache erstellen, um das Problem zu lösen? Wo ist die Grenze?
Nielsbot

1
@nielsbot Ich denke, das zählt zu den Standardlücken .
Neil

7

Sauber , 292 278 273 271 262 261 Bytes

-5 Bytes dank 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]

Probieren Sie es online!

Eine Lambda-Funktion, die die IntWerte 0..3den Bildern in der im OP angegebenen Reihenfolge zuordnet.



@Adam Danke! Ich konnte das anwenden, aber ich habe es erst gesehen, nachdem ich es weiter gekürzt hatte - spart aber immer noch Bytes :)
Endlich

Äh, warum gibt es zwei Schnipsel?
Erik der Outgolfer

@EriktheOutgolfer der zweite ist der Lambda. Der erste ist der Code, von dem es abhängt. Ich füge sie nicht in dasselbe Snippet ein, da ich eine Aufgabe nicht mehrzeilig in das Snippet einfügen kann.
Urous

5

Python 2 , 292 290 284 282 281 Bytes

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

Probieren Sie es online!

Nimmt eine Ganzzahl von 0 bis 3 als Eingabe und verwendet die Listenindizierung (1 oder 0), um jede Ausgabe zu erstellen.

-2 für ein nicht benötigtes Klammerpaar.

-6 durch Entfernen einer Variablenzuordnung, die nur einmal verwendet wurde.

-2 für eine andere Variable zur einmaligen Verwendung.

-1 mit einem Tipp von @Rod


1
Die Variablen n, pund qsind ebenfalls nicht erforderlich (jeweils -2 Byte). " db"und "_/\_"wird mit "\n"später verbunden, können Sie beide in " db\n_/\_", um ein anderes Byte zu speichern. Sie können (wahrscheinlich) +yvon jedem Element etwas aus der Liste entfernen (und auch die Konstante entfernen) wie(...)[i>2]+["\__/"]
Rod

@ Rod Danke für den \ n Tipp. Das habe ich verpasst. Ich bin mir jedoch nicht sicher, ob n, p und q richtig sind. Sie werden jeweils zweimal verwendet, jeweils eine Seite der Hauptrakete, um zu definieren, ob die Booster benötigt werden oder nicht. Gleichermaßen benötigt y in einem Fall einen Zeilenumbruch davor und in dem anderen Fall einige andere Zeichen. Könnte wahrscheinlich von einem vollständigen Umschreiben profitieren, um ehrlich zu sein. Zögern Sie nicht, Ideen daraus zu übernehmen und Ihre eigene Antwort zu veröffentlichen.
ElPedro

5

Ruby , 234 212 205 Bytes

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

Probieren Sie es online!

Nimmt eine ganze Zahl von 0-3. Bildet ein Array aus den linken Hälften jeder Phase, indiziert sie, füllt sie auf und spiegelt jede Zeile wider. Alle Auffüllungen haben die gleiche Breite, so dass die letzten Phasen führende Leerzeichen enthalten. Gibt ein Array von Zeichenfolgen zurück.

-2 Bytes: Deklarieren Sie ydas Array sofort, anstatt es *[y]später zu benötigen .

-5 Bytes: Ersetzen x="\\"durch t=%w{_| \\}.

-5 Byte: Weniger Dereferenzierung, mehr Array-Addition.

-1 Bytes: h+y*21+[?A*2]-> h+y*21<<?A*2in Phase 1.

-3 Bytes: Die Angabe erlaubt das Weglassen der *$/Verknüpfung mit dem Ergebnis.

-4 Bytes: ["b","\\_","_/"]-> %w{b \\_ _/}in Phase 3.

-2 Bytes: Verwenden Sie auch die %wNotation im Head-Array.

-7 Bytes: Verwenden rjustanstelle von manuellem Auffüllen (dies bedeutet auch, dass die linke Seite generiert und gespiegelt wird, anstatt mit der rechten Seite zu beginnen)

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

Ruby , 209 183 Bytes

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

Probieren Sie es online!

Erforderliche Eingaben wie folgt:

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

Die Idee ist, das centre core + upper stage + fairingals Standard zu nehmen und es für die anderen Ausgänge zu ändern.

Kommentiert

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

Die erste Antwort, um die Eingabe nicht trivial zu nutzen! Sehr schön.
benj2240

1

Rot , 333 Bytes

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

Probieren Sie es online!

Nimmt 1 - 4 als Eingabe

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 Bytes

Ich habe ein Experiment mit der Rebol- compressFunktion durchgeführt, indem ich einen String aus allen 4 Stufen komprimiert und den entsprechenden Teil nach der Dekomprimierung ausgedruckt habe :

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

Erläuterung

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

Probieren Sie es online!


0

C (clang) , 421 408 Bytes

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

Probieren Sie es online!


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.