バドミントンサーブの関連部分


10

前書き:

現在、バドミントンに関連する課題は他に1つしかないことがわかりました。私は自分でバドミントンをしているので(過去13年間)、バドミントンに関連するいくつかの課題を追加すると思いました。ここで2番目(最初のものはここにあります):

チャレンジ:

バドミントンに関するいくつかのルールは、

  • サーブは常にネット上で斜めに行われます。
  • 常にネットに平行で最も近いラインの後にサーブする必要があります。
  • 提供できるエリアは、シングル(1対1)かダブル/ミックス(2対2)かによって異なります。
    • シングル(1対1)の場合、下の画像の青い領域がサービスを提供できる場所です。つまり、これは後ろのパーツ​​を含み、横のパーツを除外しています。
    • ダブルス/ミックス(2対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
+--+---------------+---------------+--+

例:

ここでは、サーブの関連部分のみを出力する2つの例を示します。

入力:シングルおよびサーブブロックA
出力:

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

ご覧のとおり、Fはブロック内の隅に追加されていますが、ASCI-art出力でTはが置き換え+られています。


入力:ダブルおよびサーブブロックC
出力:

                                       

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

                                       

チャレンジルール:

  • 先頭と末尾の改行はオプションです(入力が単一の場合、先頭と末尾の2つの空行を含みます)。末尾のスペースもオプションです。ただし、先行スペースは必須です。
  • 提供元のブロックが許可されていることを示す4つの合理的な個別の入力(整数の場合、[-999,999]の範囲内に留まる)。また、2つの合理的な個別の入力で、それがシングルかダブル/ミックスかを示します(ただし、この関連する禁止された抜け穴に注意しください)。回答で使用したI / Oを記入してください!
  • andの代わりに小文字のfand t(または大文字と小文字の混合)を使用できます。FT
  • 単一の出力文字列を返すまたは印刷する代わりに、行のリストまたは文字の行列を返すことができます。

一般的なルール:

  • これはなので、バイト単位の最短の回答が優先されます。
    コードゴルフ言語では、コードゴルフ言語以外の言語で回答を投稿しないようにしないでください。「あらゆる」プログラミング言語について、可能な限り短い答えを考え出すようにしてください。
  • デフォルトのI / Oルールを使用した回答には標準ルールが適用されるため、STDIN / STDOUT、関数/メソッドを適切なパラメーターで使用し、戻り値の型の完全なプログラムを使用できます。あなたの電話。
  • デフォルトの抜け穴は禁止されています。
  • 可能であれば、コードのテスト(TIOなど)のリンクを追加してください。
  • また、回答の説明を追加することを強くお勧めします。

あ、バドミントン。私が常にプレイしたかったが、プレイするプレイヤーを忘れたか、見つけることができなかったため、回避できなかった1つのゲーム
Quintec

@Quintecオランダの私たちのクラブに自由な夜を訪れてください; p
Kevin Cruijssen

1
飛行機のチケットとホテルの代金を払えば :)
Quintec、

1
@Quintecあなたが勝ったら、私は航空券を払い戻します、
ハハ

1
@MagicOctopusUrnはい、オランダ出身のプロのバドミントン選手が何人かいます。彼らが世界のリストでどのランクなのかわからないので、私はバドミントンを頻繁に見ません(とにかく、スポーツニュースでは5分しかありません。それでも、他のすべての時間はサッカーで無駄になっています)。そして、いや、トッププレイヤーとしては、収入を得るのはやっとだと思います。間違いなく数百万ではありません。
Kevin Cruijssen

回答:


2

チャコール、81バイト

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

オンラインでお試しください!リンクはコードの詳細バージョンです。ように、第1の入力を受け取り1、または2シングルまたはダブルの一方としての第2の入力のためのABCD問題のような。説明:

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

関連するDコートの幅と高さをループして、長方形を描画します。

×=¹⁸O⟲O↙⁴

ネットを描き、回転対称を適用してAコートを追加します。

J¹±³F

追加FD裁判所。

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

裁判所のT関連する場所にを追加しAます。

F№ABη‖↑F№ACη‖

正しい法廷から仕えるために必要に応じて出力を反映します。


1
@KevinCruijssen見逃して申し訳ありませんが、今すぐ修正する必要があります。ありがとうございます。
ニール、

3

Pythonの2285の 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/True)を受け取りDouble/Single

そして0-3サービングブロック(0,1,2,3= C,D,A,B


それは速かった!素敵な答え。
Kevin Cruijssen、

1
@うん、先週サンドボックスから試してみた:P
TFeld

1

JavaScript(ES7)、 216 ...  205201199 バイト

(block)(double)2112

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)

オンラインでお試しください!

フォーマットされたバージョン

どうやって?

y=0y=30x=0x=39y

X=x19Y=y15

p = X * Y * b < 0q = Y > 0 ^ b & 1b

XY

x * 24 % 35 > 2x{0,3,19,35,38}

オンラインでお試しください!

~16 >> Y % 62 % 6 & 20y{0,2,12,18,28,30}2

オンラインでお試しください!

i

  • 3:スペース
  • 2: |
  • 1: -
  • 0:+またはT

(d ? Y : X - 87) > 169d(d ? X - 87 : Y) % 169T


* TIOを開き、出力の検証を開始します*正常に見えます。予想どおり、8つの出力はすべて正しいです。*実際のコードを見る*うーん.. wthが続いています¿..:S後でその説明を楽しみにして、@ Arnauld。ASCIIアートチャレンジのための算術、3値、およびビット単位の計算の予想外の量 xD
Kevin Cruijssen

1
@KevinCruijssen実際、私の目標が200バイト未満になるように、数式がもっとおかしくなってほしいです。;)しかし、私のアプローチはおそらくフィールド全体を描画するために最適化されすぎており、妥当なバイトコストでパラメータを考慮に入れるには十分ではありません。
Arnauld

おそらくそう[-999,999]です。4つの異なる入力の範囲内の任意の入力値を許可したので、おそらくそれを何らかの方法で使用して、いくつかのバイトをゴルフすることができます。それは部分的にやり直すことを意味します、それはおそらく努力の価値がありません。残念ながら、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の2進リンク。文字列のリストを返します

バイトを節約してくれた@KevinCruijssenに感謝!


私はジェリーがわからないので、おそらくここで馬鹿げたことを言うでしょうが“|-+TO= ”“F”、を使用すると、“F”単一の文字を別のタイプの文字列に変換できませんか?たとえば、05AB1Eには、サイズ1(')、2()、または3()の文字列の組み込みがあるので、である可能性があります'F。ジェリーに似たようなものがあるのか​​、それとも別の理由があるのか​​わかりませんか“|-+TO= ”“F”
Kevin Cruijssen

1
@KevinCruijssenありがとう、そして素晴らしい挑戦。私はそうは思いません。2つの文字リテラル(with付き)がありますが、1つはありません。数字の7を使用してFをルックアップに追加することもできますが、7の後に21を付ける必要があるため、2つの文字を区切るスペースが必要になるため、文字の数は同じです。
ニックケネディ

さて、私が言ったように、私はジェリーを知りません。1文字または2文字の文字列のビルトインも含まれていると思いますが、そうでない場合は信じます。:)
Kevin Cruijssen

@KevinCruijssen私は他の誰かが飛び込んできてうれしい-まだ学んでいる!
Nick Kennedy

1
@KevinCruijssen 単一文字リテラルに使用できる完全に見逃した-おっと!バイトを保存していただきありがとうございます。
ニックケネディ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.