ส่วนที่เกี่ยวข้องสำหรับการเสิร์ฟแบดมินตัน


10

บทนำ:

ผมเห็นมีเพียงหนึ่งที่เกี่ยวข้องกับแบดมินตันท้าทายอื่น ๆ ในขณะนี้ ตั้งแต่ฉันเล่นแบดมินตันด้วยตัวเอง (ในช่วง 13 ปีที่ผ่านมา) ฉันคิดว่าฉันจะเพิ่มความท้าทายเกี่ยวกับแบดมินตัน ที่นี่ที่สอง (อันแรกพบได้ที่นี่ ):

ท้าทาย:

กฎบางอย่างเกี่ยวกับแบดมินตันทำหน้าที่:

  • การให้บริการจะทำในแนวทแยงมุมผ่านเน็ตเสมอ
  • คุณจะต้องให้บริการหลังจากเส้นที่ขนานและใกล้เคียงที่สุดกับเน็ต
  • พื้นที่ที่คุณได้รับอนุญาตให้บริการแตกต่างกันไปขึ้นอยู่กับว่าเป็นพื้นที่เดี่ยว (1 vs 1) หรือสองครั้ง / พื้นที่ผสม (2 vs 2)
    • สำหรับคนโสด (1 กับ 1) พื้นที่สีน้ำเงินในภาพด้านล่างเป็นพื้นที่ที่คุณได้รับอนุญาต นี่คือการรวมส่วนที่ด้านหลัง แต่ไม่รวมชิ้นส่วนที่ด้านข้าง
    • สำหรับคู่ผสม / มิกซ์ (2 vs 2) พื้นที่สีเขียวในภาพด้านล่างเป็นตำแหน่งที่คุณได้รับอนุญาตให้ใช้เซิร์ฟเวอร์ ดังนั้นนี่คือไม่รวมส่วนที่ด้านหลัง แต่รวมถึงชิ้นส่วนที่ด้านข้าง
  • คุณอาจไม่ยืนอยู่บนเส้นเมื่อเสิร์ฟ แต่รถรับส่งจะยังคงอยู่ข้างในถ้าพวกเขาลงจอดบนเส้น

นี่คือเค้าโครงของสนามแบดมินตัน:
ป้อนคำอธิบายรูปภาพที่นี่

กฏท้าทาย:

การป้อนข้อมูล:

คุณจะได้รับสองอินพุต:

  • สิ่งที่บ่งบอกว่าเรากำลังเล่นเดี่ยวหรือคู่ / มิกซ์ (เช่นบูลีน)
  • สิ่งที่จะระบุว่าคุณกำลังบล็อกบล็อกใด (เช่น[1,2,3,4]หรือ['A','B','C','D']ใช้ในภาพด้านบน)

เอาท์พุท:

เฉพาะบรรทัดที่เกี่ยวข้องสำหรับการให้บริการปัจจุบัน (รวมถึงสุทธิ) รวมถึงFเพื่อระบุที่ที่คุณให้บริการและอีกมากมายTเพื่อระบุว่าคุณจะให้บริการที่

แม้ว่าในความเป็นจริงคุณจะได้รับอนุญาตให้บริการจากและไปยังที่ใดก็ได้ในพื้นที่ที่กำหนดเราถือว่าคนที่จะให้บริการจะยืนอยู่ในมุมของพื้นที่ให้บริการที่ปิดตรงกลางของสุทธิซึ่งเป็นที่ที่คุณจะวาง Fและพวกเขาจะทำหน้าที่ใด ๆ ของมุมทั้งสี่ของพื้นที่ที่พวกเขาจะต้องทำหน้าที่ในการซึ่งเป็นที่ที่คุณจะวางTs
ในฐานะที่เป็น ASCII-art สนามแบดมินตันทั้งหมดจะเป็นดังต่อไปนี้ (มีการเพิ่มตัวเลขเพื่อให้คุณไม่ต้องนับเอง):

 2        15              15        2

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

ตัวอย่าง:

ตัวอย่างสองตัวอย่างสำหรับการแสดงผลเฉพาะส่วนที่เกี่ยวข้องของการบริการ:

อินพุต: บล็อกเดี่ยวและบล็อกA
เอาต์พุต:

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

อย่างที่คุณเห็นFมีการเพิ่มที่มุมภายในบล็อก แต่Tแทนที่ด้วย+ในเอาต์พุต ASCI-art


อินพุต: เพิ่มเป็นสองเท่าและบล็อกC
เอาต์พุต:

                                       

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

                                       

กฏท้าทาย:

  • ขึ้นบรรทัดใหม่ที่นำหน้าและต่อท้ายเป็นทางเลือก (รวมถึงบรรทัดว่างสองบรรทัดที่นำหน้าและต่อท้ายเมื่ออินพุตเป็นบรรทัดเดียว) ช่องว่างต่อท้ายเป็นตัวเลือกเช่นกัน ช่องว่างชั้นนำมีผลบังคับใช้อย่างไรก็ตาม
  • อินพุตที่แตกต่างกันสี่ประการที่เหมาะสมเพื่อระบุว่าบล็อกที่เราให้บริการนั้นได้รับอนุญาต (สำหรับจำนวนเต็มอยู่ในช่วง [-999,999]) เช่นเดียวกับสองอินพุตที่แตกต่างกันตามสมควรเพื่อระบุว่าเป็นแบบเดี่ยวหรือคู่ / ผสม (โปรดทราบช่องโหว่ที่ต้องห้ามนี้ที่เกี่ยวข้อง ) โปรดระบุ I / O ที่คุณใช้ในคำตอบ!
  • คุณได้รับอนุญาตให้ใช้ตัวพิมพ์เล็กfและt(หรือกรณีผสม) แทนและFT
  • คุณได้รับอนุญาตให้ส่งคืนรายการบรรทัดหรือเมทริกซ์ของอักขระแทนที่จะส่งคืนหรือพิมพ์เอาต์พุตสตริงเดียว

กฎทั่วไป:

  • นี่คือ ดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์จะเป็นผู้ชนะ
    อย่าปล่อยให้ภาษาโค้ดกอล์ฟกีดกันคุณจากการโพสต์คำตอบด้วยภาษาที่ไม่ได้เข้ารหัส พยายามหาคำตอบสั้น ๆ ที่เป็นไปได้สำหรับภาษาโปรแกรม 'ใด ๆ '
  • กฎมาตรฐานใช้สำหรับคำตอบของคุณด้วยกฎ I / O เริ่มต้นดังนั้นคุณจึงได้รับอนุญาตให้ใช้ STDIN / STDOUT ฟังก์ชั่น / วิธีพร้อมพารามิเตอร์ที่เหมาะสมและประเภทผลตอบแทนโปรแกรมเต็มรูปแบบ การโทรของคุณ
  • ช่องโหว่เริ่มต้นเป็นสิ่งต้องห้าม
  • หากเป็นไปได้โปรดเพิ่มลิงก์พร้อมทดสอบรหัสของคุณ (เช่นTIO )
  • นอกจากนี้ขอแนะนำให้เพิ่มคำอธิบายสำหรับคำตอบของคุณ

อาแบดมินตัน เกมหนึ่งที่ฉันอยากจะเล่น แต่ไม่เคยเล่นเพราะลืม / ไม่สามารถหาผู้เล่นที่จะเล่นด้วย
Quintec

@Quintec อย่าลังเลที่จะเยี่ยมชมสโมสรของเราในประเทศเนเธอร์แลนด์ในช่วงเย็นฟรี p
Kevin Cruijssen

1
ตกลงถ้าคุณจ่ายค่าตั๋วเครื่องบินและโรงแรมของฉัน :)
Quintec

1
@Quintec หากคุณชนะฉันจะจ่ายค่าตั๋วเครื่องบินกลับฮ่าฮ่า xD
Kevin Cruijssen

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หรือ2สำหรับซิงเกิ้ลหรือเป็นสองเท่าอินพุตที่สองเป็นหนึ่งABCDในคำถาม คำอธิบาย:

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

วนรอบความกว้างที่เกี่ยวข้องและความสูงของDศาลและวาดสี่เหลี่ยม

×=¹⁸O⟲O↙⁴

วาดอวนและใช้สมมาตรการหมุนเพื่อเพิ่มAคอร์ท

J¹±³F

เพิ่มFไปที่Dศาล

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

เพิ่มTs ไปยังสถานที่ที่เกี่ยวข้องในAศาล

F№ABη‖↑F№ACη‖

สะท้อนเอาท์พุทที่จำเป็นในการให้บริการจากศาลที่ถูกต้อง


1
@KevinCruijssen ขออภัยที่มองว่าควรได้รับการแก้ไขแล้วขอบคุณ
Neil

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/True) สำหรับประเภทเกม ( Double/Single),

และ0-3สำหรับบล็อกเสิร์ฟ ( 0,1,2,3= C,D,A,B)


นั่นเร็วมาก! คำตอบที่ดี
Kevin Cruijssen

1
@ ใช่ฉันค่อนข้างลองจาก sandbox เมื่อสัปดาห์ที่แล้ว: P
TFeld

1

JavaScript (ES7),  216 ... 205 201  199 ไบต์

รับอินพุตเป็น(block)(double)โดยที่บล็อกเป็นทั้ง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)

ลองออนไลน์!

เวอร์ชันที่จัดรูปแบบแล้ว

อย่างไร?

เราย้ำจาก y=0 ถึง y=30 และจาก x=0 ถึง x=39 สำหรับแต่ละค่าของ y.

ก่อนอื่นเราให้คำจำกัดความ X=x19 และ Y=y15.

ตัวแปรp = X * Y * b < 0และq = Y > 0 ^ b & 1ใช้เพื่อกำหนดสิ่งที่ต้องทำในแต่ละไตรมาสตามบล็อกb.

จากนี้ไปทั้งคู่ X และ Y ถูกยกกำลังสองเพื่อทดสอบตำแหน่งที่แน่นอนภายในแต่ละไตรมาสของสนามอย่างง่ายดาย

การแสดงออกx * 24 % 35 > 2ให้ผลเป็นเท็จถ้าx เป็นของ {0,3,19,35,38}(ตำแหน่งของเส้นแนวตั้ง) หรือจริงมิฉะนั้น

ลองออนไลน์!

การแสดงออก~16 >> Y % 62 % 6 & 2ให้ผลผลิต0 ถ้า y เป็นของ {0,2,12,18,28,30} (ตำแหน่งของเส้นแนวนอนไม่รวมสุทธิ) หรือ 2 มิฉะนั้น.

ลองออนไลน์!

ตัวแปร i ถูกกำหนดให้เป็นผลลัพธ์ของ bitwise OR ระหว่างค่าสองค่าด้านบนและถูกตีความว่า

  • 3: พื้นที่
  • 2: |
  • 1: -
  • 0: +หรือT

นิพจน์(d ? Y : X - 87) > 169ใช้เพื่อครอบตัดฟิลด์ตามประเภทเกมd(เดี่ยวหรือคู่) การแสดงออกที่คล้ายกัน(d ? X - 87 : Y) % 169จะใช้ในการวาดTของในตำแหน่งที่เหมาะสม


* เปิด TIO และเริ่มตรวจสอบผลลัพธ์ *ดูดี; เอาต์พุตทั้งแปดถูกต้องตามที่คาดไว้ * ดูที่รหัสจริง *อืมมม .. wth เป็นไปon¿ .. : S รอคอยที่จะมีคำอธิบายว่าภายหลัง@Arnauld จำนวนทางคณิตศาสตร์ที่ไม่คาดคิดจำนวนที่สามและการคำนวณระดับบิตสำหรับการท้าทาย ASCII-art xD
Kevin Cruijssen

1
@KevinCruijssen ที่จริงแล้วฉันหวังว่าสูตรของฉันจะประหลาดมากยิ่งขึ้นเพื่อที่ฉันจะได้รับภายใต้ 200 ไบต์ซึ่งเป็นเป้าหมายแรกของฉัน ;) แต่แนวทางของฉันน่าจะเหมาะกับการวาดฟิลด์เต็มและไม่เพียงพอต่อการพิจารณาพารามิเตอร์ด้วยราคาไบต์ที่สมเหตุสมผล
Arnauld

อาจเป็นเพราะฉันอนุญาตให้อินพุตค่าใด ๆ อยู่ในช่วง[-999,999]ของอินพุตทั้งสี่ที่แตกต่างกันดังนั้นบางทีคุณอาจใช้วิธีนั้นเพื่อประโยชน์ของคุณในการเล่นกอล์ฟไบท์ได้ มันอาจหมายถึงการเริ่มต้นใหม่บางส่วนซึ่งอาจไม่คุ้มค่ากับความพยายาม น่าเสียดายที่ฉันไม่สามารถให้คำแนะนำการเล่นกอล์ฟเพื่อช่วยให้คุณต่ำกว่า 200 ไบต์ได้ ฉันขอให้คุณโชคดีในความพยายามของคุณ ; p
Kevin Cruijssen

@KevinCruijssen เรียบร้อยแล้ว :)
Arnauld

1

เยลลี่ , 108 99 ไบต์

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

ลองออนไลน์!

ฉันแน่ใจว่านี่สามารถเล่นกอล์ฟได้ดีขึ้น

ลิงก์ Dyadic ที่มีอาร์กิวเมนต์ซ้าย 0 หรือ 1 สำหรับซิงเกิ้ล / คู่และอาร์กิวเมนต์ที่ถูกต้อง 0,1,2,3 สำหรับ Quadrants ที่แตกต่างกัน ส่งคืนรายการของสตริง

ขอบคุณ @KevinCruijssen สำหรับการบันทึกไบต์!


ฉันไม่รู้จักเจลลี่ดังนั้นฉันอาจจะพูดอะไรบางอย่างที่โง่เขลาที่นี่ แต่ด้วย“|-+TO= ”“F”จะไม่สามารถเล่น“F”กอล์ฟกับสายอักขระประเภทอื่นสำหรับอักขระเดี่ยวได้หรือไม่ ตัวอย่างเช่นใน 05AB1E มี buildins สำหรับสตริงขนาด 1 ( '), 2 ( ), หรือ 3 ( ) ดังนั้นจึงอาจเป็น'Fได้ ไม่ทราบว่าวุ้นมีอะไรที่คล้ายกันหรือถ้าคุณมีเหตุผลที่มันจะเป็นอีก“|-+TO= ”“F”?
Kevin Cruijssen

1
@KevinCruijssen ขอบคุณและท้าทายดี ฉันไม่คิดอย่างนั้น มีตัวอักษรสองตัว (ที่มี⁾) แต่ไม่ใช่ตัวอักษรหนึ่งตัว ฉันสามารถใช้หมายเลข 7 และเพิ่ม F ลงในการค้นหาได้ แต่มันก็เป็นจำนวนอักขระที่เหมือนกันเพราะจำเป็นต้องทำตามหมายเลข 7 ด้วย 21 ซึ่งต้องใช้พื้นที่ในการแยกทั้งสอง
Nick Kennedy

อย่างที่ฉันพูดฉันไม่รู้วุ้น คิดว่ามันอาจมี builtins สำหรับสายอักขระ 1 หรือ 2 ตัวเช่นกัน แต่ถ้าคุณบอกว่าไม่ใช่ฉันก็เชื่อคุณ :)
Kevin Cruijssen

@KevinCruijssen ฉันมีความสุขที่คนอื่นจะกระโดด - ยังคงเรียนรู้!
Nick Kennedy

1
@KevinCruijssen ฉันพลาดไปโดยสิ้นเชิงที่สามารถใช้สำหรับตัวอักษรตัวเดียว - โอ๊ะโอ! ขอบคุณสำหรับการบันทึกไบต์
Nick Kennedy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.