打网球2:东西方比赛


10

有一个挑战,让我们打网球丹尼尔。他建议在南北方向建立法院。我的提议是建立一个法院,以东西方向打网球。

您必须打印一个网球场,但是由于机密原因,您必须以最少的字节数进行打印。

网球场

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

原始规则是:

  • 没有多余的空间。
  • 没有标签,因为它们将不公平。
  • 允许使用一个可选的尾随换行符。

这是,因此以字节为单位的最短代码胜出!

Answers:



10

Python 2,59个字节

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

在线尝试!

打印字符串的前半部分,然后反向显示。这很无聊,但是效率很高。我尝试提取出out的重复部分s,尤其是的重复部分-,但没有找到更短的部分。


Python 2,59个字节

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

在线尝试!

使用Jo King的构造


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

4

Python 3中65 62个字节

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

在线尝试!


4
现在,是我认为一个Python应对这一挑战应该有什么样的字符串切片巫术。打的好!
DLosc


2

Python 3,75个字节

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

大概是高尔夫-我以前从未真正尝试过挑战。

在线尝试!

在Python 2中,我可以将其增加到76个字节

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

-2感谢Jo King

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

在线尝试!

我们循环以下三种模式无限(6次是我们的目的足够无穷大),切片关每个前6个字符:-| ,和| |--。然后,为了得到网球场,我们x将每条线的an 和反向连接起来。



1

MBASIC,82字节

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

滥用WIDTH指令为我节省了大约20个字节。



1

05AB1E25 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艺术发生器•L®y[Â-Γ•5BžLR"\n -x|"‡•B°”Ñ•3BžLR" -|"‡,之后音译已经通过交换堆栈上的数量和串还golfed,使用в代替B,和索引与琴弦è




0

V,25个字节

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

在线尝试!

十六进制转储:

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

十六进制转储:

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



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

Powershell,60 59字节

-1个字节,谢谢@AdmBorkBork

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

1
需要做的59个字节[0,1+2..0]
AdmBorkBork,


0

C#(.NET Core),88字节

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

在线尝试!

取消高尔夫:

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

 


这是使用匿名功能的另一种方法,该方法基于第一个“打网球”线程中adrianmp的回答

C#(.NET Core),88字节

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

在线尝试!

取消高尔夫:

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

0

K436 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转换为base-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-| "

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.