ฟอลคอนเฮฟวี่เวท


43

เลือกชุดสี่ไบต์โดยไม่มีการแทนที่ (เช่นไม่มีการทำซ้ำไบต์) และไม่จำเป็นต้องเรียงตามลำดับจากชุดใดชุดหนึ่งต่อไปนี้:

  1. อักขระของการเข้ารหัสไบต์เดียวใด ๆ
  2. อักขระ Unicode ในช่วง 00 – FF
  3. จำนวนเต็มทศนิยมที่ลงนามในช่วง −128–127
  4. จำนวนเต็มทศนิยมที่ไม่ได้ลงนามในช่วง 0–255

ค่าสี่ค่าที่คุณเลือก (โปรดระบุว่าเป็นค่าใด) จะเป็นอินพุตที่ถูกต้อง คุณต้องจับคู่แต่ละค่ากับหนึ่งในงานศิลปะ ASCII ด้านล่าง

ได้รับ (โดยวิธีการใด ๆ ) หนึ่งในสี่อินพุตที่ถูกต้องของคุณตอบสนอง (โดยวิธีการใด ๆ แม้รายการของสตริง) ด้วยศิลปะ ASCII ที่สอดคล้องกัน อนุญาตให้มีพื้นที่สีขาวเป็นพิเศษในทุกด้านตราบใดที่ภาพนั้นอยู่ในพื้นที่ 2D ที่ต่อเนื่องกัน

ไบต์แรก:

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

ไบต์ที่สอง:

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

ไบต์ที่สาม:

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

ไบต์ที่สี่:

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

มีอะไรใหม่เกี่ยวกับ ASCII art Kolmogorov ที่ท้าทายความซับซ้อนนี้

  1. ความสามารถในการเลือกอินพุตที่ถูกต้องนำเสนอมุมมองใหม่สำหรับความท้าทาย อินพุตมีข้อ จำกัด อย่างชัดเจนเกินกว่าที่จะเข้ารหัสผลลัพธ์ทั้งหมด แต่สามารถนำข้อมูลที่เพียงพอเพื่อให้ได้รับความสนใจ

  2. เอาท์พุทที่เป็นไปได้หลาย ๆ อันมีโครงสร้างร่วมกันมากมายดังนั้นการนำรหัสหรือรูปภาพย่อยมาใช้ซ้ำจึงเป็นไปได้ทั้งภายในภาพแต่ละภาพและระหว่างภาพ

  3. มีการทำสำเนามากพอที่แม้แต่ภาษาที่ไม่ได้มุ่งไปสู่ความท้าทายเช่นนี้มีโอกาสพอสมควรที่จะสามารถใช้รหัสที่ฉลาดได้มากกว่าแค่การเข้ารหัสสตริงอย่างหนัก


2
db ดูเหมือนแอสตันมาร์ติน! AFAIK เป็น Tesla Roadster
Level River St

1
@ LevelRiverSt Bowie ไม่ใช่ Brown!
Adám

ช่องว่างนำหน้า / ต่อท้ายอนุญาตให้ใช้โดยเฉพาะทางด้านซ้ายหรือไม่
Level River St

@ LevelRiverSt ขอบคุณ ฉันลืมที่จะเขียนแม้ว่าฉันจะคิดถึงมัน
อดัม

1
นี่เป็นอนิเมชั่นจริงเหรอ?
แฟนต้า

คำตอบ:


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!
Adám

16
@ Adámถูกต้อง แต่BFR.reduce() == FalconHeavy: p
Arnauld

นี่คืออัจฉริยะ เป็นครั้งที่สองที่ฉันชอบรออะไรอยู่มี JavaScript ในตัวสำหรับสิ่งนั้น! ถ้าอย่างนั้นฉันก็มาสัมผัสความรู้สึกของฉัน ... +1!
rodolphito

น่าประทับใจเช่นเคย
Weijun Zhou

"FRFRFRF" = "Fu!#?%$RocketFu!#?%$RocketFu!#?%$RocketFu!#"ขวา? ฉันรักคำตอบนี้มากกว่าสิ่งใดฮ่า ๆ
Magic Octopus Urn

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 ผมคิดว่านับว่าเป็นหนึ่งในช่องโหว่มาตรฐาน
Neil

7

ทำความสะอาด , 292 278 273 271 262 261 ไบต์

-5 ไบต์ขอบคุณ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]

ลองออนไลน์!

ฟังก์ชั่นแลมบ์ดาทำแผนที่Intค่า0..3กับภาพตามลำดับที่ระบุไว้ใน OP



@ Adámขอบคุณ! ฉันสามารถใช้มันได้ แต่ฉันเห็นมันหลังจากที่ฉันย่อให้สั้นลงเท่านั้น - ยังช่วยประหยัดไบต์ได้ด้วย :)
Feburous

เอ๊ะทำไมมีตัวอย่างสองอัน
Erik the Outgolfer

@EriktheOutgolfer อันที่สองคือแลมบ์ดา คนแรกคือรหัสมันขึ้นอยู่กับ ฉันไม่วางไว้ในตัวอย่างเดียวกันเพราะฉันไม่สามารถมอบหมายงานหลายรายการในตัวอย่างได้
Feburous

5

Python 2 , 292 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
n, pและqตัวแปรที่ไม่จำเป็นมากเกินไป (-2 ไบต์แต่ละคน) " db"และ"_/\_"จะเข้าร่วมใน"\n"ภายหลังคุณสามารถเปลี่ยนทั้งสองเป็น" db\n_/\_"บันทึกไบต์อื่น คุณสามารถ (อาจ) ย้าย+yจากแต่ละองค์ประกอบออกจากรายการ (และลบ const ด้วย) สิ่งที่ต้องการ(...)[i>2]+["\__/"]
Rod

@Rod ขอบคุณสำหรับเคล็ดลับ \ n ฉันพลาดอันนั้น ไม่แน่ใจเกี่ยวกับ n, p และ q พวกมันถูกใช้สองครั้งในแต่ละด้านหนึ่งของจรวดหลักเพื่อกำหนดว่าจำเป็นต้องใช้ดีเด่นหรือไม่ Simailarly y ในกรณีหนึ่งต้องขึ้นบรรทัดใหม่ก่อนหน้านี้และในอีกกรณีหนึ่งมีอักขระอื่น ๆ อาจจะได้ประโยชน์จากการเขียนใหม่ทั้งหมดเพื่อความซื่อสัตย์ อย่าลังเลที่จะรับแนวคิดใด ๆ จากมันและใช้มันเพื่อโพสต์คำตอบของคุณเอง
ElPedro

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แทนการขยายด้วยตนเอง (ซึ่งหมายถึงการสร้างด้านซ้ายและทำมิเรอร์แทนการเริ่มต้นด้วยด้านขวา)

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

ทับทิม , 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 ไบต์

ฉันทำการทดลองด้วยcompressฟังก์ชั่นของ Rebol บีบอัดสตริงของทั้ง 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 (เสียงดังกราว) , 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.