羽毛球服务的相关部分


10

介绍:

我看到现在只有另一个与羽毛球有关的挑战。自从我自己打羽毛球以来(至今已有13年),我认为自己会增加一些与羽毛球有关的挑战。这里是第二个(第一个可以在这里找到):

挑战:

有关羽毛球的一些规则适用:

  • 发球总是在对角线上进行。
  • 您必须始终在平行且最接近网络的线之后进行服务。
  • 根据您是单人(1比1)还是双/混合(2比2),允许您服务的区域会有所不同。
    • 对于单身人士(1对1),下图中的蓝色区域是允许您用餐的地方。因此,这包括背面的零件,但不包括侧面的零件。
    • 对于双打/混音(2对2),下图中的绿色区域是允许您进行服务器存储的地方。因此,这不包括背面的部分,而是包括侧面的部分。
  • 放送食物时,您可能不会站在排队上。但是,如果航天飞机降落在一条线上,航天飞机将仍然在内部。

这里是羽毛球场的布局:
在此处输入图片说明

挑战规则:

输入:

您将获得两个输入:

  • 用来表明我们正在演奏单曲还是双曲/混音的东西(即布尔值)
  • 用来指示您要投放的是哪个街区的内容(即[1,2,3,4]['A','B','C','D']如上图所示)。

输出:

仅当前服务的相关行(包括网络),包括F表示您从哪里服务的行,以及多个T表示您将潜在服务的行。

尽管实际上您可以在指定区域内的任何地方服务,但我们假设将要服务的人将始终站在服务区域的角落,靠近网络的中间,这是您要放置的地方的F。它们将服务到它们必须服务的区域的四个角落中的任何一个,这就是您放置Ts的地方。
作为ASCII艺术,整个羽毛球字段如下(已添加数字,因此您不必自己计算它们):

 2        15              15        2

+--+---------------+---------------+--+
|  |               |               |  |    1
+--+---------------+---------------+--+
|  |               |               |  |
|  |               |               |  |
|  |               |               |  |
|  |               |               |  |
|  |               |               |  |    9
|  |               |               |  |
|  |               |               |  |
|  |               |               |  |
|  |               |               |  |
+--+---------------+---------------+--+
|  |               |               |  |    2
|  |               |               |  |
O=====================================O    37 times '='
|  |               |               |  |
|  |               |               |  |    2
+--+---------------+---------------+--+
|  |               |               |  |
|  |               |               |  |
|  |               |               |  |
|  |               |               |  |
|  |               |               |  |    9
|  |               |               |  |
|  |               |               |  |
|  |               |               |  |
|  |               |               |  |
+--+---------------+---------------+--+
|  |               |               |  |    1
+--+---------------+---------------+--+

例子:

这是仅输出服务相关部分的两个示例:

输入:单个和服务块A
输出:

                   T---------------T   
                   |               |   
                   +---------------+   
                   |               |   
                   |               |   
                   |               |   
                   |               |   
                   |               |   
                   |               |   
                   |               |   
                   |               |   
                   |               |   
                   T---------------T   
                   |               |    
                   |               |    
O=====================================O
   |               |                     
   |               |                     
   +---------------+                   
   |              F|                   
   |               |                   
   |               |                   
   |               |                   
   |               |                   
   |               |                   
   |               |                   
   |               |                   
   |               |                   
   +---------------+                   
   |               |                   
   +---------------+                   

如您所见,在F块的角落添加了,但是在ASCI-art输出T中替换了+


输入:加倍和发球区C
输出:

                                       

+--+---------------+                   
|  |               |                   
|  |               |                   
|  |               |                   
|  |               |                   
|  |               |                   
|  |               |                   
|  |               |                   
|  |               |                   
|  |              F|                   
+--+---------------+                   
|  |               |                   
|  |               |                   
O=====================================O
                   |               |  |
                   |               |  |
                   T---------------+--T
                   |               |  |
                   |               |  |
                   |               |  |
                   |               |  |
                   |               |  |
                   |               |  |
                   |               |  |
                   |               |  |
                   |               |  |
                   T---------------+--T

                                       

挑战规则:

  • 前导和尾随的换行符是可选的(当输入为单个时,包括前导和尾随的两个空行)。尾随空格也是可选的。但是必须有前导空格。
  • 允许使用任何四个合理的不同输入来指示我们正在服务的块(对于整数,请保持在[-999,999]范围内);以及任何两个合理的不同输入,以指示其是单/双/混合(尽管如此,请注意此相关的禁止的漏洞)。请说明您在答案中使用的I / O!
  • 您可以使用小写ft(或大小写混合)代替FT
  • 您可以返回行或字符矩阵的列表,而不是返回或打印单个输出字符串。

通用规则:

  • 这是 ,因此以字节为单位的最短答案会获胜。
    不要让代码高尔夫球语言阻止您发布使用非代码高尔夫球语言的答案。尝试针对“任何”编程语言提出尽可能简短的答案。
  • 标准规则适用于具有默认I / O规则的答案,因此允许您使用STDIN / STDOUT,具有正确参数的函数/方法以及返回类型的完整程序。您的来电。
  • 默认漏洞是禁止的。
  • 如果可能的话,请添加一个带有测试代码的链接(即TIO)。
  • 另外,强烈建议为您的答案添加说明。

啊,羽毛球。我一直想玩但从来没有玩过的一款游戏,因为忘记/找不到玩家可以玩
Quintec '19

磷; @Quintec随意来参观我们的俱乐部在荷兰的免费晚间
凯文Cruijssen

1
交易,如果您支付我的机票和酒店费用?:)
Quintec,

1
@Quintec如果您赢了,我会归还机票,哈哈xD
Kevin Cruijssen

1
@MagicOctopusUrn是的,有一些来自荷兰的专业羽毛球运动员。不确定他们在世界排行榜上的排名是什么,我不经常观看羽毛球(通常无论如何提到羽毛球新闻,体育新闻只有5分钟。所有其他时间都浪费在足球上)。不,作为顶级玩家,我认为您可能几乎不会赚钱。绝对不是数百万。
凯文·克鲁伊森

Answers:


2

木炭,81字节

NθF⮌Eθ⁺¹⁶׳ιF✂541⊖θURι±×³Iκ×=¹⁸O⟲O↙⁴J¹±³FF²F²«J×ι±⁺¹²×³θ⁺²×⁻¹⁵׳θκT»F№ABη‖↑F№ACη‖

在线尝试!链接是详细版本的代码。取第一输入作为12用于单打或双打,第二输入为一体ABCD作为问题。说明:

F⮌Eθ⁺¹⁶׳ιF✂541⊖θURι±×³Iκ

D场地的相关宽度和高度上循环并绘制矩形。

×=¹⁸O⟲O↙⁴

画网并应用旋转对称来添加A球场。

J¹±³F

FD法院添加到法院。

F²F²«J×ι±⁺¹²×³θ⁺²×⁻¹⁵׳θκT»

Ts 添加到A法院的相关位置。

F№ABη‖↑F№ACη‖

反映必要的结果,以便从正确的法院服务。


1
@KevinCruijssen抱歉,忽略了此内容,现在应该修复,谢谢。
尼尔,

3

Python 2中285个 284字节

R=str.replace
s,q=input()
A=' '*19
l='| '[s]+'  |'+A[4:]+'|'+A
r=['T--+','   T'][s]+'-'*15+'T'+A
h=[r]+[l,R(r,*'T+')]*s+[l]*8+[l[:18]+'F'+'|'+A,r,l,l,'O'+'='*37+'O']
h+=[R(l[::-1],*'T+')for l in h[-2::-1]]
h[9+2*s]=R(h[9+2*s],*'F ')
for l in[l[::q%2*2-1]for l in h[::q/2*2-1]]:print l

在线尝试!

将输入作为游戏类型()的0/1(或),False/TrueDouble/Single

0-3用于服务块(0,1,2,3= C,D,A,B


太快了!好答案。
凯文·克鲁伊森

1
@是的,我有点上周在沙盒中尝试过:P
TF实地

1

JavaScript(ES7), 216 ...  205201 199字节

将输入作为(block)(double),其中block-2 (右上), -1个 (左下方), 1个 (右下)或 2(左上角)和double是布尔值。

b=>d=>(g=x=>y<31?`+-| =OTF
`[X=x-19,Y=y-15,p=X*Y*b<0,q=Y>0^b&1,X*=X,Y*=Y,i=x*24%35>2|~16>>Y%62%6&2,x<39?Y?p*X|(d?Y:X-87)>169?3:i?X-1|Y-16|q?i:7:q*(d?X-87:Y)%169&&6:x%38?4:5:++y&&8]+g(-~x%40):'')(y=0)

在线尝试!

格式化版本

怎么样?

我们从 ÿ=0ÿ=30 和来自 X=0X=39 对于的每个值 ÿ

我们首先定义 X=X-19ÿ=ÿ-15

变量p = X * Y * b < 0q = Y > 0 ^ b & 1用于确定根据块在每个季度绘制的内容b

从现在开始 Xÿ 平方,以便轻松测试该字段每个季度内的绝对位置。

如果该表达式x * 24 % 35 > 2产生falseX 属于 {03193538}(垂直线的位置),否则为true

在线尝试!

表达式~16 >> Y % 62 % 6 & 2产生0 如果 ÿ 属于 {021218岁2830} (水平线的位置,不包括网络)或 2 除此以外。

在线尝试!

变量 一世 被定义为上述两个值之间按位或的结果,因此被解释为:

  • 3:空间
  • 2: |
  • 1: -
  • 0:+T

该表达式(d ? Y : X - 87) > 169用于根据游戏类型裁剪字段d(单或双)。类似的表达式(d ? X - 87 : Y) % 169用于T在适当的位置绘制。


*打开TIO并开始验证输出*看起来不错;正如预期的那样,所有八个输出都是正确的。*看实际的代码*呵呵..正在进行中..:S期待稍后的解释,@Arnauld。ASCII艺术挑战的算术,三进制和按位计算数量出乎意料。xD
Kevin Cruijssen

1
@KevinCruijssen实际上,我希望我的公式更加怪异,以便我可以将其设为200字节以下,这是我最初的目标。;)但是,我的方法可能在绘制整个字段方面进行了太多优化,而在以合理的字节成本考虑参数方面还不够。
阿纳尔德

可能是的,因为我允许[-999,999]四个不同输入的范围内的任何输入值,所以也许您可以以某种方式利用它来获取一些字节。这将意味着部分重新开始,这也许不值得付出努力。不幸的是,我无法为您提供200字节以下的高尔夫技巧以帮助您;我只能祝您好运。; p
Kevin Cruijssen

@KevinCruijssen完成。:)
Arnauld

1

果冻108 99字节

“¢¥Þ‘Ṭ+þ³ḤN+“¢¤€‘¤ṬḤ;Ø0¤×3R¤¦€³+0x39¤µ‘03³?‘;20¤¦€1,-2¦;565DWx“¢%¢‘¤;UṚ$ị“|-+TO= ””F21¦€³Ḥ_⁵¤¦UṚƭ⁴¡

在线尝试!

我相信这可以打得更好。

双向链接,左侧/左侧参数0或1用于单打/双打,右侧参数0、1、2、3用于不同服务象限。返回字符串列表

感谢@KevinCruijssen保存了一个字节!


我不认识Jelly,所以在这里我可能会说些愚蠢的东西,但是有了“|-+TO= ”“F”,不能将“F”它打成单一字符的另一种类型的字符串吗?例如,在05AB1E中,内置了大小为1('),2()或3()的字符串的字符串,因此可能是'F。不知道Jelly是否有类似的东西,或者您是否还有其他理由要这样做“|-+TO= ”“F”
凯文·克鲁伊森

1
@KevinCruijssen谢谢,很好的挑战。我不这么认为。有两个字符文字(带有⁾),但没有一个。我可以使用数字7并将F添加到查找中,但是它是相同数量的字符,因为需要在7后面加上21,因此需要一个空格来分隔两者。
肯尼迪

好吧,正如我说的,我不认识果冻。以为它可能也有一些内置的1或2个字符的字符串,但是如果您不同意,我相信您。:)
凯文·克鲁伊森

@KevinCruijssen我很高兴有人跳入-还在学习!
肯尼迪

1
@KevinCruijssen我完全错过了可以用于单个字符文字的内容-糟糕!感谢您保存一个字节。
尼克·肯尼迪
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.