มาเล่นเกมเทนนิส 2: เกมฝั่งตะวันออก


10

มีความท้าทายคือการเล่นเทนนิส Let 'sโดยแดเนียล เขาเสนอให้วางศาลในทิศทางเหนือ - ใต้ ข้อเสนอของฉันคือสร้างศาลเพื่อเล่นเทนนิสในทิศทางตะวันออก - ตะวันตกเช่นกัน

คุณต้องพิมพ์สนามเทนนิส แต่ต้องทำในจำนวนไบต์ที่น้อยที่สุดเนื่องจากเหตุผลที่เป็นความลับ

สนามเทนนิส

------x------
|  |  x  |  |
|  |--x--|  |
|  |  x  |  |
------x------

กฎดั้งเดิมคือ:

  • ไม่มีช่องว่างเพิ่มเติม
  • ไม่มีแท็บใดที่จะไม่ยุติธรรม
  • ขึ้นบรรทัดใหม่หนึ่งตัวเลือกที่ได้รับอนุญาต

นี่คือดังนั้นรหัสที่สั้นที่สุดในหน่วยไบต์ชนะ!

คำตอบ:


6

Canvas , 13 12 ไบต์

«ω↕9:gW:tC‟┼

Quad-palindromizes มุมบีบอัดของสนาม

ลองที่นี่!

11 ไบต์ที่มีตัวพิมพ์ใหญ่การXใช้ความจริงที่/บีบอัดได้ดีกว่าxและการปรับแก้แบบ palindromizing จะส่งผลให้เกิดการทับซ้อน/และมิเรอ\ร์ซึ่งส่งผลให้X


1
ดูฉันคิดว่าเมื่อฉันเห็นคำถามนี้ครั้งแรกคือ "ฉันมีเวลาพอที่จะเรียนรู้ Canvas ในตอนนี้หรือไม่แล้วโพสต์วิธีแก้ปัญหา" ไม่ชัดเจน: P
Quintec

10

Python 2 , 59 ไบต์

s="------x------\n|  |  x  |  |\n|  |--x"
print s+s[-2::-1]

ลองออนไลน์!

พิมพ์ครึ่งแรกของสตริงตามด้วย reverse มันน่าเบื่อ แต่มีประสิทธิภาพ ฉันพยายามแยกส่วนที่ซ้ำซ้อนออกไปsโดยเฉพาะอย่างยิ่ง-แต่ไม่พบว่ามีอะไรสั้นลง


Python 2 , 59 ไบต์

for n in 6,0,2,0,6:x='-'*n+'  |  |'[n:];print x[::-1]+'x'+x

ลองออนไลน์!

ใช้ก่อสร้างโจของพระบาทสมเด็จพระเจ้าอยู่หัว


Python 2 , 62 ไบต์

b='|  '*2
for r in'-'*6,b,'|  |--',b,'-'*6:print r+'x'+r[::-1]

ลองออนไลน์!

พิมพ์ครึ่งแรกของแต่ละบรรทัดตามด้วย'x'ตามด้วยครึ่งแรกกลับด้าน


7

ถ่าน 15 ไบต์

↑²←⁶↓xx→x²↑²‖O¬

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

↑²        |
          |

     ------
←⁶        |
          |

    x------
↓xx x     |
          |

    x------
→x² x     |
    x--   |

    x------
↑²  x  |  |
    x--|  |







1

Python 2 , 69 68 66 ไบต์

-2 ขอบคุณโจคิง

for l in"-","|  ","|  |--","|  ","-":l*=6;print l[:6]+"x"+l[5::-1]

ลองออนไลน์!

เรารอบสามต่อไปนี้รูปแบบอนันต์ (6 ครั้งเป็นพอไม่มีที่สิ้นสุดสำหรับวัตถุประสงค์ของเรา) และชิ้นออก 6 ตัวอักษรแรกของแต่ละ: -, และ| | |--จากนั้นเพื่อให้ได้สนามเทนนิสเราเชื่อมต่อxและย้อนกลับของแต่ละบรรทัด



1

MBASIC , 82 ไบต์

1 WIDTH 13:PRINT"------x------|  |  x  |  ||  |--x--|  ||  |  x  |  |------x------

การใช้คำสั่ง WIDTH ในทางที่ผิดช่วยฉันได้ประมาณ 20 ไบต์



1

05AB1E , 25 24 ไบต์

"
 -x|"•L®y[Â-Γ•5вèJ.º.∊

ลองออนไลน์

ทางเลือก25 24 ไบต์:

… -|•B°”Ñ•3вèJ3ä'x«».º.∊

ลองออนไลน์

คำอธิบาย:

"\n -x|"       # Push string "\n -x|"
L®y[Â-Γ•      # Push compressed number 5960566858660563
         5в    # Converted to Base-5 as list: 
               #  [2,2,2,2,2,2,3,0,4,1,1,4,1,1,3,0,4,1,1,4,2,2,3]
è              # Index each digit into the string
 J             # And join the list together
               #  "\n -x|" and [2,2,2,2,2,2,3,0,4,1,1,4,1,1,3,0,4,1,1,4,2,2,3]
               #   → "------x\n|  |  x\n|  |--x"
             # Intersect mirror everything horizontally
  .∊           # Intersect mirror everything vertically (and output implicitly)

 -|           # Push string " -|"
B°”Ñ•         # Push compressed integer 193812448
      3в       # Converted to Base-3 as list: [1,1,1,1,1,1,2,0,0,2,0,0,2,0,0,2,1,1]
è              # Index each digit into the string
 J             # And join the list together
               #  " -|" and [1,1,1,1,1,1,2,0,0,2,0,0,2,0,0,2,1,1]
               #   → "------|  |  |  |--"
3ä             # Split the string into three parts: ["------","|  |  ","|  |--"]
  'x«         '# Append an "x" to each: ["------x","|  |  x","|  |--x"]
     »         # Join by newlines: "------x\n|  |  x\n|  |--x"
             # Intersect mirror everything horizontally
  .∊           # Intersect mirror everything vertically (and output implicitly)

ดู 05AB1E เคล็ดลับของฉัน (ส่วนวิธีบีบอัดจำนวนเต็มขนาดใหญ่ )เพื่อทำความเข้าใจว่าเพราะ•L®y[Â-Γ•อะไร5960566858660563และ•B°”Ñ•เป็น193812448อย่างไร

ขอขอบคุณที่@MagicOctopusUrnกำเนิด ASCII ศิลปะ 'sสำหรับ•L®y[Â-Γ•5BžLR"\n -x|"‡และ•B°”Ñ•3BžLR" -|"‡หลังจากที่ถอดได้รับแข็งแรงเล่นกอล์ฟต่อไปโดยการเปลี่ยนจำนวนและสตริงใน stack ใช้вแทนและดัชนีเป็นสตริงที่มีBè




0

V , 25 ไบต์

13é-Äï5I  |<esc>ÄÙ4l5r-Îd^ãrx

ลองออนไลน์!

hexdump:

00000000: 3133 e92d c4ef 3549 2020 7c1b c4d9 346c  13.-..5I  |...4l
00000010: 3572 2dce 645e e372 78                   5r-.d^.rx

นี่คือกระบวนการของฉัน:

13é-Äï5I  |<esc>3<<ÄÙ4l5r-Gã<C-v>ërx
13é-Äï5I  |<esc>3<<ÄÙ4l5r-Î7|rx
13é-Äï5I  |<esc>3<<ÄÙ4l5r-Îãrx
13é-Äï5I  |<esc>ÄÙ4l5r-Îd^ãrx

รุ่นอื่น:

5I  |<esc>5ÄM4l5r-HÒ-G.Îxxãrx

hexdump:

00000000: 3549 2020 7c1b 35c4 4d34 6c35 722d 48d2  5I  |.5.M4l5r-H.
00000010: 2d47 2ece 7878 e372 780a                 -G..xx.rx.

0

JavaScript (Node.js) , 76 ไบต์

(a='----',A='|  |',b='--x--',B='  x  ')=>[p=a+b+a,q=A+B+A,A+b+A,q,p].join`
`

ลองออนไลน์!

  • 68 ไบต์ถ้าอนุญาตให้ใช้สตริงได้

JavaScript (Node.js) , 75 ไบต์

_=>[p='x---',q='x|  ','x| -',q,p].map(c=>[...'1221330331221'].map(d=>c[d]))

ลองออนไลน์!

  • ถ่านหนึ่งเอาต์พุต 2d char นี้ ฉันไม่รู้ว่าจะสามารถตีกอล์ฟได้มากกว่านี้หรือไม่


0

Pyth , 32 ไบต์

t_ps@L"x-
| "jC"??ôkË7"5

ลองออนไลน์ได้ที่นี่ รหัสด้านบนมีอักขระแปลก ๆ ดังนั้นการคัดลอก / วางอาจไม่ทำงาน

xพิมพ์ครึ่งแรกของรูปแบบตามด้วยการย้อนกลับได้โดยไม่ต้องกลาง

t_ps@L"x-\n| "jC"..."5   Note newline replaced with \n, encoded string replaced with ...

               C"..."    Convert encoded string to base 256 number 727558509253668163499780
              j      5   Convert to base 5, yields [1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 2, 3, 4, 4, 3, 4, 4, 0, 4, 4, 3, 4, 4, 3, 2, 3, 4, 4, 3, 1, 1, 0]
    @L                   Map each of the above to...
      "x-\n| "           ... [x, -, newline, |, space]
   s                     Concatenate into string
  p                      Print without newline
 _                       Reverse
t                        All but first character, implicit print



0

C # (. NET Core) , 88 ไบต์

string a="------x------\n",b="|  |  x  |  |\n";Console.Write(a+b+"|  |--x--|  |\n"+b+a);

ลองออนไลน์!

Ungolfed:

string a = "------x------\n",
       b = "|  |  x  |  |\n";
Console.Write(a + b + "|  |--x--|  |\n" + b + a);

 


ต่อไปนี้เป็นอีกวิธีหนึ่งในการทำงานกับฟังก์ชั่นนิรนามตามคำตอบของ adrianmpจาก Let's Play Tennis เธรดแรก:

C # (. NET Core) , 88 ไบต์

()=>{string a="------x------\n",b="|  |  x  |  |\n";return(a+b+"|  |--x--|  |\n"+b+a);};

ลองออนไลน์!

Ungolfed:

() =>
{
    string a = "------x------\n",
           b = "|  |  x  |  |\n";
    return(a + b + "|  |--x--|  |\n" + b + a);
};

0

K4 , 36 35 ไบต์

สารละลาย:

"x-| "@4\:509 425 477 0@4\:17218113

ตัวอย่าง:

q)k)"x-| "@4\:509 425 477 0@4\:17218113
"------x------"
"|  |  x  |  |"
"|  |--x--|  |"
"|  |  x  |  |"
"------x------"

คำอธิบาย:

เราต้องการสร้างรายการดัชนีลงในอาร์เรย์"x-| "เช่น

1 1 1 1 1 1 0 1 1 1 1 1 1
2 3 3 2 3 3 0 3 3 2 3 3 2
2 3 3 2 1 1 0 1 1 2 3 3 2
2 3 3 2 3 3 0 3 3 2 3 3 2
1 1 1 1 1 1 0 1 1 1 1 1 1

เพื่อสร้างสิ่งนี้เราสามารถนำการแสดงฐาน 4 ของการพลิกของตัวเลขเหล่านี้ สิ่งนี้ทำให้เรา:

425 509 509 425 477 477 0 477 477 425 509 509 425

เราสามารถรับค่าและดัชนีที่แตกต่างกันในดัชนีที่เราต้องการ:

q)509 425 477 0@1 0 0 1 2 2 3 2 2 1 0 0 1
425 509 509 425 477 477 0 477 477 425 509 509 425

อาร์เรย์นี้1 0 0 1 2 2 3 2 2 1 0 0 1แปลงเป็นฐาน -4 คือ

q)k)4/:1 0 0 1 2 2 3 2 2 1 0 0 1
17218113 

ดังนั้นสำหรับการแก้ปัญหาเราแค่ทำตามขั้นตอนเหล่านี้ในทางกลับกัน

"x-| "@4\:509 425 477 0@4\:17218113 / the solution
                        4\:17218113 / convert 17218113 into base-4
          509 425 477 0@            / index (@) into 509 425 477 0
       4\:                          / convert to base-4
"x-| "@                             / index (@) into "x-| "

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.