Partie pertinente pour un service de badminton

10

Introduction:

J'ai vu qu'il n'y avait qu'un seul autre défi lié au badminton en ce moment . Depuis que je joue au badminton moi-même (depuis 13 ans maintenant), je me suis dit que j'ajouterais des défis liés au badminton. Voici le deuxième (le premier peut être trouvé ici ):

Défi:

Certaines règles sur le badminton servent:

  • Un service sera toujours effectué en diagonale sur le filet.
  • Vous devez toujours servir après la ligne parallèle et la plus proche du filet.
  • La zone dans laquelle vous êtes autorisé à servir diffère selon qu'il s'agit d'un simple (1 vs 1) ou d'un double / mix (2 vs 2).
    • Pour les célibataires (1 contre 1), la zone bleue dans l'image ci-dessous est l'endroit où vous êtes autorisé à servir. Il s'agit donc de la partie arrière, mais des parties latérales exclues.
    • Pour les doubles / mix (2 vs 2), la zone verte dans l'image ci-dessous est l'endroit où vous êtes autorisé à serveur. Cela exclut donc la partie arrière, mais inclut les parties latérales.
  • Vous ne pouvez pas rester sur les lignes lorsque vous servez. Mais la navette sera toujours à l'intérieur si elle atterrit en haut d'une ligne.

Voici l'aménagement d'un terrain de badminton:
entrez la description de l'image ici

Règles du défi:

Contribution:

Vous recevrez deux entrées:

  • Quelque chose pour indiquer si nous jouons un simple ou double / mix (c'est-à-dire un booléen)
  • Quelque chose pour indiquer à partir de quel bloc vous servez (c'est [1,2,3,4]-à- dire ou ['A','B','C','D']tel qu'utilisé dans l'image ci-dessus).

Production:

Seules les lignes pertinentes pour le service actuel (y compris le net), y compris un Fpour indiquer d'où vous servez et plusieurs Tpour indiquer où vous allez potentiellement servir.

Bien qu'en réalité, vous êtes autorisé à servir de et vers n'importe où dans les zones désignées, nous supposons qu'une personne qui servira se tiendra toujours dans le coin de la zone de service se ferme au milieu du filet, où vous placerez le F. Et ils serviront à l'un des quatre coins de la zone où ils doivent servir, c'est là que vous placerez le Ts.
En tant qu'art ASCII, l'ensemble du terrain de badminton serait le suivant (les chiffres sont ajoutés pour que vous n'ayez pas à les compter vous-même):

 2        15              15        2

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

Exemples:

Voici deux exemples pour sortir uniquement les parties pertinentes du service:

Entrée: bloc simple et de service A
Sortie:

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

Comme vous pouvez le voir, le Fest ajouté dans le coin du bloc, mais Tremplace le +dans la sortie ASCI-art.


Entrée: bloc double et de service C
Sortie:

                                       

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

                                       

Règles du défi:

  • Les sauts de ligne de début et de fin sont facultatifs (y compris les deux lignes vides de début et de fin lorsque l'entrée est unique). Les espaces de fin sont également facultatifs. Les espaces de tête sont cependant obligatoires.
  • Quatre entrées distinctes raisonnables pour indiquer à partir de quel bloc nous servons sont autorisées (pour les entiers, restez dans la plage [-999,999]); ainsi que deux entrées distinctes raisonnables pour indiquer s'il s'agit d'un simple ou double / mixage (veuillez noter cette lacune interdite pertinente , cependant). Veuillez indiquer les E / S que vous avez utilisées dans votre réponse!
  • Vous êtes autorisé à utiliser des minuscules fet t(ou des majuscules) au lieu de Fet T.
  • Vous êtes autorisé à renvoyer une liste de lignes ou une matrice de caractères au lieu de renvoyer ou d'imprimer une seule chaîne de sortie.

Règles générales:

  • C'est le , donc la réponse la plus courte en octets l'emporte.
    Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues non-golfeur de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation.
  • Des règles standard s'appliquent à votre réponse avec des règles d'E / S par défaut , vous êtes donc autorisé à utiliser STDIN / STDOUT, des fonctions / méthodes avec les paramètres appropriés et des programmes complets de type retour. Ton appel.
  • Les failles par défaut sont interdites.
  • Si possible, veuillez ajouter un lien avec un test pour votre code (par exemple TIO ).
  • De plus, l'ajout d'une explication à votre réponse est fortement recommandé.
Kevin Cruijssen
la source
Ah, le badminton. Le seul jeu auquel j'ai toujours voulu jouer mais que je n'ai jamais réussi à faire car j'ai oublié / je n'ai pas pu trouver de joueurs avec qui jouer
Quintec
@Quintec N'hésitez pas à venir visiter notre club aux Pays-Bas pour une soirée gratuite; p
Kevin Cruijssen
1
Deal, si vous payez mon billet d'avion et mon hôtel? :)
Quintec
1
@Quintec Si vous gagnez, je vous rembourserai le billet d'avion, haha ​​xD
Kevin Cruijssen
1
@MagicOctopusUrn Oui, il y a des joueurs de badminton professionnels des Pays-Bas. Je ne sais pas quel rang ils ont sur la liste mondiale tbh, je ne regarde pas le badminton aussi souvent (et généralement ce n'est que 5 minutes dans l'actualité sportive s'il est mentionné de toute façon .. tout le reste du temps est perdu avec le football). Et non, en tant que meilleur joueur, vous pourriez à peine gagner un revenu, je pense. Certainement pas des millions.
Kevin Cruijssen du

Réponses:

2

Fusain , 81 octets

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

Essayez-le en ligne! Le lien est vers la version détaillée du code. Prend la première entrée comme 1ou 2pour les simples ou les doubles, la deuxième entrée comme celle de ABCDla question. Explication:

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

Faites une boucle sur les largeurs pertinentes et les hauteurs de la Dcour et dessinez les rectangles.

×=¹⁸O⟲O↙⁴

Dessinez le filet et appliquez une symétrie de rotation pour ajouter la Acour.

J¹±³F

Ajoutez le Fà la Dcour.

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

Ajoutez les Ts aux endroits appropriés du Atribunal.

F№ABη‖↑F№ACη‖

Réfléchissez la sortie au besoin pour servir à partir du bon terrain.

Neil
la source
1
@KevinCruijssen Désolé d'avoir négligé cela, devrait être corrigé maintenant, merci.
Neil
3

Python 2 , 285 284 octets

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

Essayez-le en ligne!

Prend l'entrée comme 0/1(ou False/True) pour le type de jeu (Double/Single ),

et 0-3pour servir le bloc ( 0,1,2,3= C,D,A,B)

TFeld
la source
C'était rapide! Bonne réponse.
Kevin Cruijssen
1
@Ouais, j'ai un peu essayé depuis le bac à sable la semaine dernière: P
TFeld le
1

JavaScript (ES7),  216 ... 205 201  199 octets

(block)(double)-2-112

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)

Essayez-le en ligne!

Version formatée

Comment?

y=0y=30X=0X=39y .

X=X-19Oui=y-15 .

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

XOui sont au carré afin de tester facilement les positions absolues dans chaque quart de champ.

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

Essayez-le en ligne!

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

Essayez-le en ligne!

je

  • 3: espace
  • 2: |
  • 1: -
  • 0: +ouT

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

Arnauld
la source
* Ouvre TIO et commence à vérifier la sortie * semble bon; les huit sorties sont correctes, comme prévu. * Regarde le code réel * Huh .. avec ce qui se passe¿ ..: S Dans l'attente de cette explication plus tard, @Arnauld . Une quantité inattendue de calculs arithmétiques, ternaires et au niveau du bit pour un défi de l'art ASCII. xD
Kevin Cruijssen
1
@KevinCruijssen En fait, je souhaite que mes formules soient encore plus bizarres pour que je puisse obtenir moins de 200 octets, ce qui était ma cible initiale. ;) Mais mon approche est probablement trop optimisée pour dessiner tout le champ et pas assez pour prendre en compte les paramètres à un coût octet raisonnable.
Arnauld
Probablement oui, puisque j'ai autorisé toute valeur d'entrée dans la plage [-999,999]pour les quatre entrées distinctes, alors vous pourriez peut-être l'utiliser à votre avantage pour jouer au golf sur certains octets. Cela signifierait recommencer en partie, ce qui ne vaut peut-être pas la peine. Malheureusement, je ne peux pas vous donner de conseils de golf pour vous aider à moins de 200 octets; Je ne peux que vous souhaiter bonne chance dans vos tentatives. ; p
Kevin Cruijssen
@KevinCruijssen Done. :)
Arnauld
1

Gelée , 108 99 octets

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

Essayez-le en ligne!

Je suis sûr que cela peut être mieux joué au golf.

Lien dyadique avec l'argument gauche 0 ou 1 pour les simples / doubles et l'argument droit 0,1,2,3 pour différents quadrants de service. Renvoie une liste de chaînes

Merci à @KevinCruijssen d'avoir enregistré un octet!

Nick Kennedy
la source
Je ne connais pas Jelly, donc je dis probablement quelque chose de stupide ici, mais avec “|-+TO= ”“F”, ne peut-on pas “F”jouer à un autre type de chaîne pour des personnages uniques? Dans 05AB1E par exemple, il existe des commandes internes pour les chaînes de taille 1 ( '), 2 ( ) ou 3 ( ), ce qui pourrait donc être le cas 'F. Je ne sais pas si Jelly a quelque chose de similaire, ou si vous avez une autre raison pour cela “|-+TO= ”“F”?
Kevin Cruijssen
1
@KevinCruijssen Merci et beau défi. Je ne pense pas. Il existe deux littéraux de caractère (avec⁾), mais pas un. Je pourrais utiliser un nombre 7 et ajouter le F à la recherche, mais c'est le même nombre de caractères en raison de la nécessité de suivre le 7 avec un 21 qui a donc besoin d'un espace pour séparer les deux.
Nick Kennedy
Eh bien, comme je l'ai dit, je ne connais pas Jelly. Je pensais qu'il pourrait aussi avoir des builtins pour des chaînes de 1 ou 2 caractères, mais si vous dites non, je vous crois. :)
Kevin Cruijssen
@KevinCruijssen Je suis heureux que quelqu'un d'autre se jette à l'eau - toujours en train d'apprendre!
Nick Kennedy
1
@KevinCruijssen J'ai complètement raté ce qui pourrait être utilisé pour un seul caractère littéral - oups! Merci d'avoir enregistré un octet.
Nick Kennedy