배드민턴 서브 관련 부품


10

소개:

지금 당장 배드민턴 관련 도전하나 밖에 없었습니다 . 내가 배드민턴을했기 때문에 (지난 13 년 동안) 배드민턴 관련 도전을 추가 할 것이라고 생각했다. 여기 두 번째 ( 첫 번째는 여기에서 찾을 수 있습니다 ) :

도전:

배드민턴에 대한 몇 가지 규칙이 제공됩니다.

  • 서빙은 항상 그물을 통해 대각선으로 수행됩니다.
  • 당신은 항상 그물에 평행하고 가장 가까운 선을 따라야합니다.
  • 당신이 봉사 할 수있는 지역은 싱글 (1 대 1)인지 더블 / 믹스 (2 대 2)인지에 따라 다릅니다.
    • 싱글 (1 대 1)의 경우 아래 그림의 파란색 영역이 봉사 할 수있는 곳입니다. 따라서 이것은 뒷면에 부품을 포함하지만 측면에있는 부품은 제외합니다.
    • 더블 / 믹스 (2 대 2)의 경우, 아래 그림의 녹색 영역은 서버가 허용되는 곳입니다. 따라서 뒷면의 부품은 제외하지만 측면의 부품은 포함됩니다.
  • 서빙 할 때 줄에 서 있지 않을 수 있습니다. 그러나 셔틀이 노선 위에 도착하면 여전히 내부에 있습니다.

배드민턴 필드의 레이아웃은 다음과 같습니다.
여기에 이미지 설명을 입력하십시오

도전 규칙 :

입력:

두 가지 입력이 제공됩니다.

  • 단일 또는 이중 / 믹스 (예 : 부울)를 연주하는지 여부
  • 뭔가는 당신이에서 제공하고 (즉, 차단 나타 내기 위해 [1,2,3,4]또는 ['A','B','C','D']으로는 위의 그림에서 사용).

산출:

서비스 제공 위치를 나타내는를 포함하고 현재 서비스 F를 제공 할 T위치를 나타내는 복수 를 포함하여 현재 서브 (넷 포함)에 대한 관련 회선 만 .

실제로 지정된 지역의 어느 곳에서나 봉사 할 수는 있지만, 봉사 할 사람은 항상 봉사의 구석에 서있을 것입니다. F. 그리고 그들은 그들이 봉사해야 할 곳의 네 구석 중 하나에 봉사 할 것 T입니다.
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 아트 출력에서 T가 대체 +됩니다.


입력 : 더블 및 서빙 블록 C
출력 :

                                       

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

                                       

도전 규칙 :

  • 선행 및 후행 줄 바꿈은 선택 사항입니다 (입력이 단일 인 경우 선행 및 후행 두 개의 빈 줄 포함). 후행 공간도 선택 사항입니다. 그러나 선행 공간은 필수입니다.
  • 우리가 서비스를 제공하는 블록을 나타내는 4 개의 합리적인 개별 입력 (정수의 경우 [-999,999] 범위 내에 머물러 있음); 단일 또는 이중 / 혼합인지 여부를 나타내는 두 개의 합리적인 구별 입력 ( 이 관련 금지 된 허점에 유의 하십시오 ). 답변에 사용한 I / O를 명시하십시오!
  • 당신은 소문자를 사용하도록 허용 f하고 t대신 (또는 혼합 된 경우) FT.
  • 단일 출력 문자열을 반환하거나 인쇄하는 대신 행 또는 문자 매트릭스 목록을 반환 할 수 있습니다.

일반 규칙:

  • 이것은 바이트 단위의 최단 답변이 이깁니다.
    코드 골프 언어가 코드 골프 언어 이외의 언어로 답변을 게시하지 못하게하십시오. '모든'프로그래밍 언어에 대한 가능한 한 짧은 대답을 생각해보십시오.
  • 표준 규칙기본 I / O 규칙으로 답변에 적용 되므로 STDIN / STDOUT, 적절한 매개 변수 및 반환 유형의 전체 프로그램과 함께 함수 / 방법을 사용할 수 있습니다. 당신의 전화.
  • 기본 허점 은 금지되어 있습니다.
  • 가능하면 코드 테스트와 링크를 추가하십시오 (예 : TIO ).
  • 또한 답변에 대한 설명을 추가하는 것이 좋습니다.

아 배드민턴 내가 항상 플레이하고 싶었지만 한번도 플레이 할 수 없었던 플레이어를 찾지 못해서 게임을 즐기는 적이 없었던 게임
Quintec

@Quintec 무료 저녁 식사를 위해 네덜란드의 클럽을 방문해주십시오 .p
Kevin Cruijssen

1
비행기 표와 호텔 요금을 지불한다면? :)
Quintec

1
@Quintec 당신이 이기면, 나는 비행기 표를 갚을 것이다. haha ​​xD
Kevin Cruijssen

1
@MagicOctopusUrn 네, 네덜란드 출신의 프로 배드민턴 선수들이 있습니다. 그들이 세계 명단 tbh에서 어떤 순위를 가지고 있는지 잘 모르겠지만, 나는 종종 배드민턴을 보지 않습니다. 그리고 아니, 최고의 선수로서 당신은 내가 생각하는 수입을 거의 얻지 못할 수도 있습니다. 확실히 수백만이 아닙니다.
Kevin Cruijssen

답변:


2

, 81 바이트

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

온라인으로 사용해보십시오! 링크는 자세한 버전의 코드입니다. 첫번째로 입력을 받아, 1또는 2단식 또는 복식의 하나로서 제 2 입력에 대한 ABCD질문에있다. 설명:

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

D코트 의 관련 너비와 높이를 반복 하고 사각형을 그립니다.

×=¹⁸O⟲O↙⁴

그물을 그리고 회전 대칭을 적용하여 A법원 을 추가하십시오 .

J¹±³F

추가 F받는 D법원.

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

법원 T의 관련 장소에 s를 추가하십시오 A.

F№ABη‖↑F№ACη‖

올바른 법정에서 봉사하기 위해 필요에 따라 결과물을 반영하십시오.


1
@KevinCruijssen 간과해서 죄송합니다. 고쳐주세요.
Neil

3

파이썬 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
@Yeah, 나는 좀 지난 주 샌드 박스에서 그것을 시도 : P
TFeld

1

자바 스크립트 (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)

온라인으로 사용해보십시오!

형식화 된 버전

어떻게?

우리는 반복한다 와이=0와이=30 에서 엑스=0엑스=39 각 값에 대해 와이.

우리는 먼저 정의 엑스=엑스19와이=와이15.

변수 p = X * Y * b < 0q = Y > 0 ^ b & 1블록에 따라 각 분기에 무엇을 그릴 지 결정하는 데 사용됩니다.

이제부터 둘 다 엑스와이 필드의 각 분기 내에서 절대 위치를 쉽게 테스트하기 위해 제곱됩니다.

다음과 같은 경우 표현식 x * 24 % 35 > 2false를 생성 합니다엑스 에 속한다 {0,,19,35,38}(세로선의 위치) 또는 그렇지 않으면 true 입니다.

온라인으로 사용해보십시오!

표현 ~16 >> Y % 62 % 6 & 2수율0 만약 와이 에 속한다 {0,2,12,18,28,30} (망을 제외한 수평선의 위치) 또는 2 그렇지 않으면.

온라인으로 사용해보십시오!

변수 나는 는 위의 두 값 사이의 비트 단위 OR의 결과로 정의되므로 다음과 같이 해석됩니다.

  • 3 : 공간
  • 2 : |
  • 1: -
  • 0 : +또는T

이 표현 (d ? Y : X - 87) > 169은 게임 유형에 따라 필드를 자르는 데 사용됩니다(싱글 또는 더블). 의 적절한 위치에 (d ? X - 87 : Y) % 169를 그리는 데 비슷한 표현 이 사용됩니다 T.


* TIO를 열고 출력 확인을 시작합니다 . * 좋아 보입니다. 예상대로 8 개의 출력이 모두 정확합니다. * 실제 코드를 본다 * Huh .. wth is going ¿ .. : S 나중에 설명을 기다리겠습니다 . @Arnauld . ASCII 기술 챌린지에 대한 예기치 않은 양의 산술, 삼항 및 비트 계산. 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Ṛƭ⁴¡

온라인으로 사용해보십시오!

나는 이것이 더 나은 골프가 될 수 있다고 확신합니다.

싱글 / 더블의 경우 왼쪽 인수 0 또는 1과 다른 서브 사분면의 경우 오른쪽 인수 0,1,2,3이있는 이진 링크. 문자열 목록을 반환

바이트를 저장해 준 @KevinCruijssen에게 감사합니다!


나는 젤리를 모른다. 그래서 나는 여기서 바보 같은 말을 할 것이다. 그러나와 함께 “|-+TO= ”“F”, “F”단일 문자를 위해 다른 유형의 문자열로 골프를 칠 수는 없습니까? 예를 들어 05AB1E에는 크기가 1 ( '), 2 ( ) 또는 3 ( ) 인 문자열에 대한 내장 이 있으므로 다음과 같습니다 'F. 젤리와 비슷한 것이 있는지 또는 다른 이유가 있는지 모르 “|-+TO= ”“F”십니까?
Kevin Cruijssen

1
@KevinCruijssen 감사합니다. 좋은 도전입니다. 나는 그렇게 생각하지 않습니다. 두 개의 문자 리터럴 (⁾)이 있지만 하나는 없습니다. 숫자 7을 사용하고 조회에 F를 추가 할 수는 있지만 7을 21로 따라야 할 필요가 있기 때문에 동일한 수의 문자입니다. 따라서 두 개를 분리하기위한 공간이 필요합니다.
Nick Kennedy

내가 말했듯이, 나는 젤리를 모른다. 1 문자 또는 2 문자 문자열을위한 내장 기능이 있다고 생각하지만 말하지 않으면 당신을 믿습니다. :)
Kevin Cruijssen

@KevinCruijssen 다른 누군가가 뛰어 들어서 기쁘다-아직도 배우기!
Nick Kennedy

1
@KevinCruijssen 나는 단일 문자 리터럴에 사용할 수있는 것을 완전히 놓쳤다 . 바이트를 저장해 주셔서 감사합니다.
Nick Kennedy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.