ファルコンヘビーステージ


43

次の4つのセットのいずれかから、置換なしの4バイトのセットを選択します(つまり、バイトが繰り返されません)。必ずしも特定の順序である必要はありません。

  1. 任意の1バイトエンコーディングの文字
  2. 00からFFの範囲のUnicode文字
  3. -128〜127の範囲の符号付き10進整数
  4. 0〜255の範囲の符号なし10進整数

選択した4つの値(状態を入力してください)が有効な入力になります。各値を以下のASCIIアートワークのいずれかとペアにする必要があります。

4つの有効な入力のうちの1つを(何らかの方法で)与えられ、対応するASCIIアートで(何らかの方法で、文字列のリストでさえ)応答します。画像が1つの連続する2D領域にある限り、余白はすべての側面で許可されます。

最初のバイト:

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

2番目のバイト:

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

3番目のバイト:

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

4番目のバイト:

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

このASCIIアートコルモゴロフの複雑さの課題の新機能

  1. 有効な入力を選択する機能は、チャレンジの新しい側面を示します。入力は明らかに結果全体をエンコードするには制限されすぎていますが、注意を払うのに十分な情報を伝えることができます。

  2. 複数の可能な出力は多くの構造を共有するため、各画像内および画像間でコードまたはサブ画像の再利用が可能です。

  3. このような課題に十分に対応していない言語でさえ、文字列を単にハードコーディングするだけでなく、巧妙なコードを使用できる可能性が十分にあるという十分な重複があります。


2
dbはAston Martinのように聞こえます!私の知る限り、それはテスラロードスターです。
レベルリバーセント

1
@LevelRiverStボウイ、ブラウンではない!
アダム

特に左側で、先頭/末尾の空白は許可されますか?
レベルリバーセント

@LevelRiverStありがとう。私はそれを考えていたけれども、私はそれを書くのを忘れました。
アダム

1
これは本当にアニメーションですか?
FantaC

回答:


41

JavaScript(ES6)、247バイト

RegPack'ed。入力として0 ... 3が必要です。

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]

オンラインでお試しください!


16
BigFu!#?%$Rocket?しかし、これは単なるFalcon Heavyです!
アダム

16
@Adámそうです。しかしBFR.reduce() == FalconHeavy:p
アーナウド

これは天才です。ちょっと待って、そのためのJavaScriptビルトインがありますか?!それから私は感覚に来ました... +1!
ロドルフィト

相変わらず印象的。
ウェイジュン周

"FRFRFRF" = "Fu!#?%$RocketFu!#?%$RocketFu!#?%$RocketFu!#"右?何よりもこの答えが大好きです。
魔法のタコ

13

、67バイト

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

オンラインでお試しください!リンクは、コードの詳細バージョンです。入力を数値3-0として受け取ります。説明:

Nθ

番号を入力してください。

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

3の場合、ブースターの半分を引き、それをミラーリングし、ロケットの先端に移動します。

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

0でない場合、前部燃料タンクの左半分を描きます。

↓d/_¶ _\

ただし、3の場合、ノーズコーンの左半分を描画します。

↓×⁴∨›²θ⁶

ロケットの左側を描きます。

¿‹¹θAA↑¶/_‖M

ロケットの適切なベースを描画し、ミラーリングして終了します。


Charcoalこのコンテストのためだけに作成しましたか?
nielsbot

@nielsbot Charcoalは生後7か月です(コミットログを参照)。
phyrfox

冗談でした。しかし、問題を解決するための言語を作成するのはゴルフですか?境界はどこですか?
-nielsbot

1
@nielsbotこれは標準的な抜け穴の 1つと見なされます。
ニール

7

クリーン292の 278 273 271 262 261バイト

Adámのおかげで-5バイト

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]

オンラインでお試しください!

OPにリストされている順序でInt0..3を画像にマッピングするラムダ関数。



@Adámありがとう!私はそれを適用することができましたが、それをさらに短くした後にしか見ませんでした-それでもバイトを節約します:)
ousurous

ええと、なぜ2つのスニペットがあるのですか?
エリックアウトゴルファー

@EriktheOutgolfer 2番目はラムダです。最初のものは依存するコードです。スニペットに割り当てを複数行にできないため、同じスニペットに入れません。
Οurous

5

パイソン2292の 290 284 282 281バイト

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

オンラインでお試しください!

入力として0〜3の整数を受け取り、リストのインデックス(1または0)を使用して各出力を作成します。

不要なブラケットのペアの場合は-2。

-6一度だけ使用された変数の割り当てを削除する。

-2は、別の単一使用変数です。

-1 @Rodからのヒント付き


1
npおよびq変数も不要である(-2各バイト)。" db"そして、"_/\_"で結合されます"\n"後で、あなたは両方にを回すことができる" db\n_/\_"別のバイトを保存します。あなたは(おそらく)移動することができます+yのようなものリストの中から、各要素から、(とあまりにものconstを削除)(...)[i>2]+["\__/"]
ロッド

@Rod \ nヒントをありがとう。私はそれを見逃しました。ただし、n、p、qについてはわかりません。ブースターが必要かどうかを定義するために、メインロケットの両側にそれぞれ2回使用されます。Simailarly yは、ある場合にはその前に改行が必要であり、別の場合には他の文字が必要です。正直に言うと、完全に書き直すことで利益を得ることができるでしょう。アイデアを自由に取り入れて、自分の回答を投稿してください。
エルペドロ

5

ルビー234の 212 205バイト

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

オンラインでお試しください!

0〜3の整数を取ります。各フェーズの左半分の配列を作成し、インデックスを作成してから、各行をパディングして反映します。すべてのパディングは同じ幅であるため、後のフェーズには先行する空白があります。文字列の配列を返します。

-2バイト:後でy必要*[y]になるのではなく、すぐに配列として宣言します。

-5バイト:交換x="\\"t=%w{_| \\}

-5バイト:参照解除が少なく、配列が追加されます。

-1バイト:h+y*21+[?A*2]-> h+y*21<<?A*2フェーズ1。

-3バイト:仕様では*$/、結果の結合を省略できます。

-4バイト:["b","\\_","_/"]-> %w{b \\_ _/}フェーズ3。

-2バイト:%wヘッド配列にも表記を使用します。

-7バイト:rjust手動パディングの代わりに使用します(これは、右側から開始する代わりに、左側を生成してミラーリングすることも意味します)

ゴルフをしていない:

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

ルビー209 183バイト

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

オンラインでお試しください!

必要な入力は次のとおりです。

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

これはcentre core + upper stage + fairing、デフォルトとしてを取り、他の出力用に変更することです。

コメント済み

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

入力を非自明に使用するための最初の答え!非常に素晴らしい。
benj2240

1

、333バイト

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

オンラインでお試しください!

入力として1-4を取ります

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バイト

Rebolのcompress機能を使用して実験を行い、4つのステージすべての文字列を圧縮し、解凍後に対応する部分を印刷しました。

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 バイト

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

説明

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

オンラインでお試しください!


0

C(clang)421 408バイト

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

オンラインでお試しください!


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.