Hãy chơi tennis 2: trò chơi đông tây


10

Có một thử thách Hãy chơi tennis của Daniel . Ông đề nghị đặt một tòa án theo hướng Bắc-Nam. Đề xuất của tôi là tạo ra một sân chơi tennis theo hướng Đông-Tây.

Bạn phải in một sân tennis, nhưng bạn phải làm điều đó trong vài byte nhất có thể vì lý do bí mật.

Sân quần vợt

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

Quy tắc ban đầu là:

  • Không có không gian thêm.
  • Không có tab vì họ sẽ không công bằng.
  • Một dòng mới tùy chọn được cho phép.

Đây là , vì vậy mã ngắn nhất tính bằng byte sẽ thắng!

Câu trả lời:


6

Canvas , 13 12 byte

«ω↕9:gW:tC‟┼

quad-palindromizes một góc nén của trường .

Hãy thử nó ở đây!

11 byte với Xes chữ hoa , sử dụng thực tế là /nén tốt hơn xvà palindromizing sẽ dẫn đến chồng chéo /và gương của nó \, dẫn đếnX


1
Hãy xem, suy nghĩ của tôi khi lần đầu tiên tôi thấy câu hỏi này là "tôi có đủ thời gian để học Canvas ngay bây giờ và sau đó đăng một giải pháp không?" Rõ ràng là không: P
Quintec

10

Python 2 , 59 byte

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

Hãy thử trực tuyến!

In nửa đầu của chuỗi theo sau là ngược lại. Thật nhàm chán nhưng hiệu quả. Tôi đã thử trích xuất các phần lặp đi lặp lại s, đặc biệt là -, nhưng không tìm thấy gì ngắn hơn.


Python 2 , 59 byte

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

Hãy thử trực tuyến!

Sử dụng xây dựng Jo King .


Python 2 , 62 byte

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

Hãy thử trực tuyến!

In nửa đầu của mỗi dòng, theo sau là 'x'nửa đầu được đảo ngược.


7

Than , 15 byte

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

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Bằng cách giải thích, tôi sẽ hiển thị kết quả sau mỗi lệnh vẽ cho đến phản xạ cuối cùng:

↑²        |
          |

     ------
←⁶        |
          |

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

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

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

4

Python 3 , 65 62 byte

for n in 7,0,3,0,7:x="-"*n+"|  "*5;print(x[6:0:-1]+'x'+x[1:7])

Hãy thử trực tuyến!


4
Bây giờ đây là loại thuật sĩ cắt chuỗi mà tôi nghĩ rằng một câu trả lời của Python cho thử thách này phải có. Chơi tốt!
DLosc


2

Python 3, 75 byte

s='-'*6;p='|  |';w=s+'x'+s;a=p+'  x  '+p;print(w,a,p+w[4:9]+p,a,w,sep='\n')

Có thể chơi gôn - Tôi chưa bao giờ thực sự thử thách các thử thách trước đây.

Hãy thử trực tuyến!

Trong Python 2 tôi có thể lấy nó tới 76 byte

s='-'*6;p='|  |';w=s+'x'+s;a=p+'  x  '+p
for i in w,a,p+w[4:9]+p,a,w:print i




1

Python 2 , 69 68 66 byte

-2 cảm ơn Jo King

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

Hãy thử trực tuyến!

Chúng tôi chu kỳ sau ba mẫu vô hạn (6 lần là đủ vô hạn cho các mục đích của chúng tôi) và lát ra khỏi 6 ký tự đầu tiên của mỗi: -, | , và | |--. Sau đó, để có được sân tennis, chúng tôi ghép một xvà đảo ngược của mỗi dòng.



1

MBASIC , 82 byte

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

Việc lạm dụng chỉ thị WIDTH đã tiết kiệm cho tôi khoảng 20 byte.



1

05AB1E , 25 24 byte

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

Hãy thử trực tuyến.

25 thay thế 24 byte:

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

Hãy thử trực tuyến.

Giải trình:

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

Xem 05AB1E mẹo này của tôi (phần Làm thế nào để nén các số nguyên lớn? ) Để hiểu tại sao •L®y[Â-Γ•5960566858660563•B°”Ñ•193812448.

Nhờ @MagicOctopusUrn phát ASCII-art 's cho •L®y[Â-Γ•5BžLR"\n -x|"‡•B°”Ñ•3BžLR" -|"‡, sau đó transliterate đã được golfed hơn nữa bằng cách trao đổi số lượng và chuỗi trên stack, sử dụng вthay vì B, và chỉ số thành chuỗi với è.




0

V , 25 byte

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

Hãy thử trực tuyến!

Hexdump:

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

Đây là quá trình của tôi:

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

Phiên bản thay thế:

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

Bình thường , 32 byte

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

Hãy thử trực tuyến tại đây . Đoạn mã trên chứa một số ký tự kỳ lạ, vì vậy sao chép / dán có thể sẽ không hoạt động.

In nửa đầu của mẫu, theo sau là ngược lại mà không có trung tâm 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

Powershell, 60 59 byte

-1 byte cảm ơn @AdmBorkBork

('------x------','|  |  x  |  |','|  |--x--|  |')[0,1+2..0]

1
59 byte để làm[0,1+2..0]
admBorkBork


0

C # (.NET Core) , 88 byte

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

Hãy thử trực tuyến!

Ung dung:

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

 


Đây là một cách khác để làm điều đó với một chức năng ẩn danh dựa trên câu trả lời của adrianmp từ chuỗi trò chơi Let's Tennis đầu tiên:

C # (.NET Core) , 88 byte

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

Hãy thử trực tuyến!

Ung dung:

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

0

K4 , 36 35 byte

Giải pháp:

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

Thí dụ:

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

Giải trình:

Chúng tôi muốn tạo một danh sách các chỉ mục vào mảng "x-| ", vd

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

Để tạo ra điều này, chúng ta có thể lấy đại diện cơ sở-4 của việc lật các số này. Điều này cho chúng ta:

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

Chúng tôi có thể lấy các giá trị và chỉ mục riêng biệt tại các chỉ số chúng tôi yêu cầu:

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

Mảng này được 1 0 0 1 2 2 3 2 2 1 0 0 1chuyển đổi thành cơ sở 4 là

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

Vì vậy, đối với giải pháp, chúng tôi chỉ làm các bước ngược lại.

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.