Introducción:
Vi que solo había otro desafío relacionado con el bádminton en este momento . Como yo mismo juego al bádminton (durante los últimos 13 años), pensé que agregaría algunos desafíos relacionados con el bádminton. Aquí el segundo (el primero se puede encontrar aquí ):
Desafío:
Algunas reglas sobre el bádminton sirven:
- Un servicio siempre se realizará en diagonal sobre la red.
- Siempre debe servir después de la línea paralela y más cercana a la red.
- El área en la que se le permite servir difiere dependiendo de si es un solo (1 contra 1) o doble / mixto (2 contra 2).
- Para los solteros (1 vs 1), el área azul en la imagen a continuación es donde se les permite servir. Esto incluye la parte posterior, pero excluye las partes laterales.
- Para dobles / mix (2 vs 2), el área verde en la imagen a continuación es donde se le permite al servidor. Esto excluye la parte posterior, pero incluye las partes laterales.
- No puede pararse en las líneas cuando sirve. Pero el transbordador seguirá estando adentro si aterrizan en la parte superior de una línea.
Aquí el diseño de un campo de bádminton:
Reglas de desafío:
Entrada:
Se le darán dos entradas:
- Algo para indicar si estamos jugando un single o doble / mix (es decir, un booleano)
- Algo para indicar desde qué bloque está sirviendo (es decir,
[1,2,3,4]
o['A','B','C','D']
como se usa en la imagen de arriba).
Salida:
Solo las líneas relevantes para el servicio actual (incluida la red), incluido un F
para indicar de dónde sirve, y múltiples T
para indicar dónde potencialmente servirá.
Aunque en realidad se le permite servir desde y hacia cualquier lugar en las áreas designadas, asumimos que una persona que servirá siempre se parará en la esquina del área de servicio y se cerrará en el medio de la red, que es donde colocará el F
. Y servirán en cualquiera de las cuatro esquinas del área donde tienen que servir, que es donde colocará el T
s.
Como ASCII-art, todo el campo de bádminton sería el siguiente (los números se agregan para que no tenga que contarlos usted mismo):
2 15 15 2
+--+---------------+---------------+--+
| | | | | 1
+--+---------------+---------------+--+
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | 9
| | | | |
| | | | |
| | | | |
| | | | |
+--+---------------+---------------+--+
| | | | | 2
| | | | |
O=====================================O 37 times '='
| | | | |
| | | | | 2
+--+---------------+---------------+--+
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | 9
| | | | |
| | | | |
| | | | |
| | | | |
+--+---------------+---------------+--+
| | | | | 1
+--+---------------+---------------+--+
Ejemplos:
Aquí hay dos ejemplos para generar solo las partes relevantes del servicio:
Entrada: bloque individual y de servicio A
Salida:
T---------------T
| |
+---------------+
| |
| |
| |
| |
| |
| |
| |
| |
| |
T---------------T
| |
| |
O=====================================O
| |
| |
+---------------+
| F|
| |
| |
| |
| |
| |
| |
| |
| |
+---------------+
| |
+---------------+
Como puede ver, el F
se agrega en la esquina dentro del bloque, pero T
está reemplazando el +
en la salida de arte ASCI.
Entrada: doble y servir bloque C
Salida:
+--+---------------+
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | F|
+--+---------------+
| | |
| | |
O=====================================O
| | |
| | |
T---------------+--T
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
T---------------+--T
Reglas de desafío:
- Las líneas nuevas iniciales y finales son opcionales (incluidas las dos líneas vacías iniciales y finales cuando la entrada es única). Los espacios finales también son opcionales. Sin embargo, los espacios iniciales son obligatorios.
- Se permiten cuatro entradas distintas razonables para indicar desde qué bloque estamos sirviendo (para enteros, permanezca dentro del rango [-999,999]); así como también dos entradas distintas razonables para indicar si es simple o doble / mix (tenga en cuenta esta escapatoria prohibida relevante ). ¡Indique la E / S que utilizó en su respuesta!
- Puede usar minúsculas
f
yt
(o mayúsculas y minúsculas ) en lugar deF
yT
. - Se le permite devolver una lista de líneas o matriz de caracteres en lugar de devolver o imprimir una sola cadena de salida.
Reglas generales:
- Esto es código-golf, la respuesta más corta en bytes gana.
No permita que los lenguajes de code-golf lo desanimen a publicar respuestas con lenguajes que no sean codegolf. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Las reglas estándar se aplican a su respuesta con las reglas de E / S predeterminadas , por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código (es decir, TIO ).
- Además, se recomienda agregar una explicación para su respuesta.
Respuestas:
Carbón , 81 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Toma la primera entrada como
1
o2
para individuales o dobles, la segunda entrada como una de lasABCD
de la pregunta. Explicación:Pase sobre los anchos relevantes y las alturas de la
D
cancha y dibuje los rectángulos.Dibuja la red y aplica simetría rotacional para agregar la
A
cancha.Agregue el
F
a laD
corte.Agregue los
T
s a los lugares relevantes en laA
corte.Refleje la salida según sea necesario para servir de la corte correcta.
fuente
Python 2 ,
285284 bytesPruébalo en línea!
Toma la entrada como
0/1
(oFalse/True
) para el tipo de juego (Double/Single
),y
0-3
para servir bloque (0,1,2,3
=C,D,A,B
)fuente
JavaScript (ES7),
216 ... 205 201199 bytesToma la entrada como−2 (parte superior derecha), −1 (abajo a la izquierda), 1 (abajo a la derecha) o 2 (arriba a la izquierda) y double es un valor booleano.
(block)(double)
, donde el bloque esPruébalo en línea!
Versión formateada
¿Cómo?
Iteramos desdey=0 a y=30 y desde x=0 a x=39 por cada valor de y .
Primero definimosX=x−19 y Y=y−15 .
Las variablesb .
p = X * Y * b < 0
yq = Y > 0 ^ b & 1
se usan para determinar qué dibujan en cada trimestre de acuerdo con el bloqueDe ahora en adelante, ambosX y Y están al cuadrado para probar fácilmente las posiciones absolutas dentro de cada cuarto del campo.
La expresiónx pertenece a {0,3,19,35,38} (las posiciones de las líneas verticales) o verdadero de lo contrario.
x * 24 % 35 > 2
produce falso siPruébalo en línea!
La expresión0 Si y pertenece a {0,2,12,18,28,30} (las posiciones de las líneas horizontales, excluyendo la red) o 2 de otra manera.
~16 >> Y % 62 % 6 & 2
producePruébalo en línea!
La variablei se define como el resultado de un OR bit a bit entre los dos valores anteriores y, por lo tanto, se interpreta como:
|
-
+
oT
La expresiónd (simple o doble). La expresión similar
(d ? Y : X - 87) > 169
se utiliza para recortar el campo según el tipo de juego.(d ? X - 87 : Y) % 169
se usa para dibujar losT
's en las posiciones apropiadas.fuente
[-999,999]
para las cuatro entradas distintas, por lo que tal vez podría usarlo de alguna manera para su ventaja para jugar algunos bytes. Significaría comenzar parcialmente de nuevo, lo que quizás no valga la pena. Lamentablemente, no puedo darte ningún consejo de golf para ayudarte con menos de 200 bytes; Solo puedo desearle buena suerte en sus intentos. ; pGelatina ,
10899 bytesPruébalo en línea!
Estoy seguro de que esto se puede jugar mejor.
Enlace diádico con argumento izquierdo 0 o 1 para individuales / dobles y argumento derecho 0,1,2,3 para diferentes cuadrantes de servicio. Devuelve una lista de cadenas
¡Gracias a @KevinCruijssen por guardar un byte!
fuente
“|-+TO= ”“F”
, ¿no se“F”
puede usar otro tipo de cadena para caracteres individuales? En 05AB1E, por ejemplo, hay incorporados para cadenas de tamaño 1 ('
), 2 („
) o 3 (…
), por lo que podría ser'F
. ¿No sabe si Jelly tiene algo similar o si tiene otra razón para que sea“|-+TO= ”“F”
?”
podría usarse para un solo carácter literal - ¡Uy! Gracias por guardar un byte.