Relevanter Teil für einen Badmintonaufschlag

10

Einführung:

Ich habe gesehen, dass es momentan nur eine andere Herausforderung im Zusammenhang mit Badminton gibt . Da ich selbst Badminton spiele (seit 13 Jahren), dachte ich mir, ich würde einige Herausforderungen im Zusammenhang mit Badminton hinzufügen. Hier der zweite (der erste ist hier zu finden ):

Herausforderung:

Einige Regeln über Badminton dienen:

  • Ein Aufschlag erfolgt immer diagonal über das Netz.
  • Sie müssen immer nach der Linie dienen, die parallel und dem Netz am nächsten ist.
  • Der Bereich, in dem Sie dienen dürfen, hängt davon ab, ob es sich um einen Einzel- (1 gegen 1) oder einen Doppel- / Mix- (2 gegen 2) Bereich handelt.
    • Bei Singles (1 gegen 1) dürfen Sie im blauen Bereich im Bild unten dienen. Dies schließt also das Teil auf der Rückseite ein, schließt jedoch die Teile an der Seite aus.
    • Bei Doppel / Mix (2 gegen 2) dürfen Sie im grünen Bereich im Bild unten Server verwenden. Dies schließt also das Teil auf der Rückseite aus, aber einschließlich der Teile an der Seite.
  • Sie dürfen beim Servieren nicht in der Schlange stehen. Aber das Shuttle bleibt immer noch drinnen, wenn sie auf einer Linie landen.

Hier das Layout eines Badmintonfeldes:
Geben Sie hier die Bildbeschreibung ein

Herausforderungsregeln:

Eingang:

Sie erhalten zwei Eingaben:

  • Etwas, das anzeigt, ob wir einen Single oder Double / Mix spielen (dh einen Booleschen Wert)
  • Etwas, das angibt, aus welchem ​​Block Sie dienen (dh [1,2,3,4]oder ['A','B','C','D']wie im obigen Bild verwendet).

Ausgabe:

Nur die relevanten Zeilen für den aktuellen Aufschlag (einschließlich des Netzes), einschließlich eines, Fum anzugeben, von wo aus Sie dienen, und mehrerer, Tum anzugeben, wohin Sie möglicherweise dienen werden.

Obwohl Sie in Wirklichkeit von und zu jedem Ort in den festgelegten Bereichen dienen dürfen, gehen wir davon aus, dass eine Person, die dienen wird, immer in der Ecke des Aufschlagbereichs steht und sich in der Mitte des Netzes befindet, wo Sie sich befinden die F. Und sie werden an jeder der vier Ecken des Bereichs dienen, an dem sie dienen müssen. Dort platzieren Sie die Ts.
Als ASCII-Kunst wäre das gesamte Badmintonfeld wie folgt (die Zahlen werden hinzugefügt, damit Sie sie nicht selbst zählen müssen):

 2        15              15        2

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

Beispiele:

Hier zwei Beispiele für die Ausgabe nur der relevanten Teile des Aufschlags:

Eingabe: Einzel- und Aufschlagblock A
Ausgabe:

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

Wie Sie sehen können, Fwird das in der Ecke innerhalb des Blocks hinzugefügt, aber das Tersetzt das +in der ASCI-art-Ausgabe.


Eingabe: Double and Serve Block C
Ausgabe:

                                       

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

                                       

Herausforderungsregeln:

  • Führende und nachfolgende Zeilenumbrüche sind optional (einschließlich der führenden und nachfolgenden zwei leeren Zeilen, wenn die Eingabe einfach ist). Leerzeichen sind ebenfalls optional. Führende Leerzeichen sind jedoch obligatorisch.
  • Alle vier vernünftigen unterschiedlichen Eingaben, um anzugeben, von welchem ​​Block wir bedienen, sind zulässig (für ganze Zahlen bleiben Sie im Bereich [-999.999]). sowie zwei vernünftige unterschiedliche Eingaben, um anzuzeigen, ob es sich um eine Einzel- oder Doppel- / Mischung handelt (beachten Sie jedoch diese relevante verbotene Lücke ). Bitte geben Sie die E / A an, die Sie in Ihrer Antwort verwendet haben!
  • Sie dürfen anstelle von und Kleinbuchstaben fund t(oder gemischte Groß- / Kleinschreibung) verwenden .FT
  • Sie können eine Liste von Zeilen oder eine Matrix von Zeichen zurückgeben, anstatt eine einzelne Ausgabezeichenfolge zurückzugeben oder zu drucken.

Allgemeine Regeln:

  • Dies ist , also gewinnt die kürzeste Antwort in Bytes.
    Lassen Sie sich nicht von Code-Golf-Sprachen davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, eine möglichst kurze Antwort für "jede" Programmiersprache zu finden.
  • Für Ihre Antwort gelten Standardregeln mit Standard-E / A-Regeln . Sie können also STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp verwenden. Ihr Anruf.
  • Standardschlupflöcher sind verboten.
  • Wenn möglich, fügen Sie bitte einen Link mit einem Test für Ihren Code (dh TIO ) hinzu.
  • Es wird dringend empfohlen, eine Erklärung für Ihre Antwort hinzuzufügen.
Kevin Cruijssen
quelle
Ah, Badminton. Das eine Spiel, das ich schon immer spielen wollte, aber nie gesehen habe, weil ich vergessen habe / keine Spieler zum Spielen gefunden habe
Quintec
@Quintec Fühlen Sie sich frei, unseren Club in den Niederlanden für einen freien Abend zu besuchen; p
Kevin Cruijssen
1
Deal, wenn Sie für mein Flugticket und Hotel bezahlen? :)
Quintec
1
@Quintec Wenn Sie gewinnen, zahle ich das Flugticket zurück, haha ​​xD
Kevin Cruijssen
1
@MagicOctopusUrn Ja, es gibt einige professionelle Badmintonspieler aus den Niederlanden. Ich bin mir nicht sicher, welchen Rang sie auf der Weltliste haben. Ich schaue nicht so oft Badminton (und normalerweise sind es nur 5 Minuten in den Sportnachrichten, wenn überhaupt erwähnt. Alle anderen Zeiten werden mit Fußball verschwendet). Und nein, als Top-Spieler könnten Sie kaum ein Einkommen erzielen, denke ich. Auf keinen Fall Millionen.
Kevin Cruijssen

Antworten:

2

Holzkohle , 81 Bytes

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

Probieren Sie es online aus! Der Link führt zur ausführlichen Version des Codes. Nimmt die erste Eingabe als 1oder 2für Einzel oder Doppel, die zweite Eingabe als eine von ABCDwie in der Frage. Erläuterung:

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

Überlaufen Sie die relevanten Breiten und Höhen des DPlatzes und zeichnen Sie die Rechtecke.

×=¹⁸O⟲O↙⁴

Zeichnen Sie das Netz und wenden Sie Rotationssymmetrie an, um das Spielfeld hinzuzufügen A.

J¹±³F

Fügen Sie das Fdem DGericht hinzu.

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

Fügen Sie das Ts zu den relevanten Stellen im AGericht hinzu.

F№ABη‖↑F№ACη‖

Reflektieren Sie die Ausgabe nach Bedarf, um vom richtigen Gericht zu dienen.

Neil
quelle
1
@ KevinCruijssen Entschuldigung für das Übersehen, sollte jetzt behoben werden, danke.
Neil
3

Python 2 , 285 284 Bytes

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

Probieren Sie es online aus!

Nimmt die Eingabe als 0/1(oder False/True) für den Spieltyp (Double/Single ),

und 0-3zum Servieren von Block ( 0,1,2,3= C,D,A,B)

TFeld
quelle
Das war schnell! Gute Antwort.
Kevin Cruijssen
1
@ Ja, ich habe es letzte Woche aus dem Sandkasten versucht: P
TFeld
1

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

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

Probieren Sie es online aus!

Formatierte Version

Wie?

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

X.=x- -19Y.=y- -fünfzehn

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

X.Y.

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

Probieren Sie es online aus!

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

Probieren Sie es online aus!

ich

  • 3: Raum
  • 2: |
  • 1: -
  • 0: +oderT

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

Arnauld
quelle
* Öffnet TIO und beginnt mit der Überprüfung der Ausgabe. * Sieht gut aus. Alle acht Ausgänge sind erwartungsgemäß korrekt. * Sieht sich den aktuellen Code an * Huh .. wth geht weiter ¿..: S Ich freue mich auf diese Erklärung später, @Arnauld . Eine unerwartete Menge an arithmetischen, ternären und bitweisen Berechnungen für eine ASCII-Herausforderung. xD
Kevin Cruijssen
1
@ KevinCruijssen Eigentlich wünschte ich mir, meine Formeln wären noch ausgeflippter, damit ich dies unter 200 Bytes bekommen könnte, was mein ursprüngliches Ziel war. ;) Aber mein Ansatz ist wahrscheinlich zu stark optimiert, um das gesamte Feld zu zeichnen, und nicht genug, um die Parameter zu angemessenen Bytekosten zu berücksichtigen.
Arnauld
Wahrscheinlich ja, da ich einen Eingabewert im Bereich [-999,999]für die vier verschiedenen Eingaben zugelassen habe, könnten Sie das vielleicht irgendwie zu Ihrem Vorteil nutzen, um einige Bytes zu spielen. Es würde bedeuten, teilweise von vorne zu beginnen, was die Mühe vielleicht nicht wert ist. Leider kann ich Ihnen keine Golftipps geben, die Ihnen unter 200 Bytes helfen. Ich kann Ihnen nur viel Glück bei Ihren Versuchen wünschen. ; p
Kevin Cruijssen
@ KevinCruijssen Fertig. :)
Arnauld
1

Gelee , 108 99 Bytes

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

Probieren Sie es online aus!

Ich bin sicher, das kann besser Golf gespielt werden.

Dyadische Verknüpfung mit dem linken Argument 0 oder 1 für Einzel / Doppel und dem rechten Argument 0,1,2,3 für verschiedene Serve-Quadranten. Gibt eine Liste von Zeichenfolgen zurück

Vielen Dank an @KevinCruijssen für das Speichern eines Bytes!

Nick Kennedy
quelle
Ich kenne Jelly nicht, also sage ich hier wahrscheinlich etwas Dummes, aber mit “|-+TO= ”“F”, kann man nicht “F”auf eine andere Art von Saite für einzelne Charaktere spielen? In 05AB1E gibt es beispielsweise integrierte Funktionen für Zeichenfolgen der Größe 1 ( '), 2 ( ) oder 3 ( ) 'F. Sie wissen nicht, ob Jelly etwas Ähnliches hat oder ob Sie einen anderen Grund dafür haben “|-+TO= ”“F”?
Kevin Cruijssen
1
@ KevinCruijssen Danke und schöne Herausforderung. Das glaube ich nicht. Es gibt zwei Zeichenliterale (mit⁾), aber keines. Ich könnte eine Zahl 7 verwenden und das F zur Suche hinzufügen, aber es ist die gleiche Anzahl von Zeichen, da der 7 eine 21 folgen muss, die daher ein Leerzeichen benötigt, um die beiden zu trennen.
Nick Kennedy
Nun, wie gesagt, ich kenne Jelly nicht. Ich dachte, es könnte auch einige eingebaute Zeichenfolgen für Zeichenfolgen mit 1 oder 2 Zeichen enthalten, aber wenn Sie nicht sagen, glaube ich Ihnen. :)
Kevin Cruijssen
@ KevinCruijssen Ich freue mich, dass jemand anderes einspringt - ich lerne noch!
Nick Kennedy
1
@ KevinCruijssen Ich habe völlig übersehen, dass dies für ein einzelnes Zeichenliteral verwendet werden kann - oops! Vielen Dank für das Speichern eines Bytes.
Nick Kennedy