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 primero:
Reto:
Entrada: Dos enteros
Salida: Una de las tres salidas distintas y únicas de su elección. Uno que indica que la entrada es una puntuación válida de bádminton Y el conjunto ha terminado con un ganador; uno que indica que la entrada es un puntaje de bádminton válido Y el conjunto aún está en juego; uno que indica que la entrada no es una puntuación válida de bádminton.
Con el bádminton, ambos (pares de) jugadores comienzan con 0 puntos, y usted se detiene cuando uno de los dos (pares de) jugadores ha alcanzado un puntaje de 21, con al menos 2 puntos de diferencia, hasta un máximo de 30-29.
Entonces, estos son todos los pares de entrada posibles (en cualquier orden) que indican que es una puntuación de bádminton válida Y el conjunto ha terminado:
[[0,21],[1,21],[2,21],[3,21],[4,21],[5,21],[6,21],[7,21],[8,21],[9,21],[10,21],[11,21],[12,21],[13,21],[14,21],[15,21],[16,21],[17,21],[18,21],[19,21],[20,22],[21,23],[22,24],[23,25],[24,26],[25,27],[26,28],[27,29],[28,30],[29,30]]
Y estos son todos los pares de entrada posibles (en cualquier orden) que indican que es un puntaje de bádminton válido PERO el conjunto todavía está en juego:
[[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[0,10],[0,11],[0,12],[0,13],[0,14],[0,15],[0,16],[0,17],[0,18],[0,19],[0,20],[1,1],[1,2],[1,3],[1,4],[1,5],[1,6],[1,7],[1,8],[1,9],[1,10],[1,11],[1,12],[1,13],[1,14],[1,15],[1,16],[1,17],[1,18],[1,19],[1,20],[2,2],[2,3],[2,4],[2,5],[2,6],[2,7],[2,8],[2,9],[2,10],[2,11],[2,12],[2,13],[2,14],[2,15],[2,16],[2,17],[2,18],[2,19],[2,20],[3,3],[3,4],[3,5],[3,6],[3,7],[3,8],[3,9],[3,10],[3,11],[3,12],[3,13],[3,14],[3,15],[3,16],[3,17],[3,18],[3,19],[3,20],[4,4],[4,5],[4,6],[4,7],[4,8],[4,9],[4,10],[4,11],[4,12],[4,13],[4,14],[4,15],[4,16],[4,17],[4,18],[4,19],[4,20],[5,5],[5,6],[5,7],[5,8],[5,9],[5,10],[5,11],[5,12],[5,13],[5,14],[5,15],[5,16],[5,17],[5,18],[5,19],[5,20],[6,6],[6,7],[6,8],[6,9],[6,10],[6,11],[6,12],[6,13],[6,14],[6,15],[6,16],[6,17],[6,18],[6,19],[6,20],[7,7],[7,8],[7,9],[7,10],[7,11],[7,12],[7,13],[7,14],[7,15],[7,16],[7,17],[7,18],[7,19],[7,20],[8,8],[8,9],[8,10],[8,11],[8,12],[8,13],[8,14],[8,15],[8,16],[8,17],[8,18],[8,19],[8,20],[9,9],[9,10],[9,11],[9,12],[9,13],[9,14],[9,15],[9,16],[9,17],[9,18],[9,19],[9,20],[10,10],[10,11],[10,12],[10,13],[10,14],[10,15],[10,16],[10,17],[10,18],[10,19],[10,20],[11,11],[11,12],[11,13],[11,14],[11,15],[11,16],[11,17],[11,18],[11,19],[11,20],[12,12],[12,13],[12,14],[12,15],[12,16],[12,17],[12,18],[12,19],[12,20],[13,13],[13,14],[13,15],[13,16],[13,17],[13,18],[13,19],[13,20],[14,14],[14,15],[14,16],[14,17],[14,18],[14,19],[14,20],[15,15],[15,16],[15,17],[15,18],[15,19],[15,20],[16,16],[16,17],[16,18],[16,19],[16,20],[17,17],[17,18],[17,19],[17,20],[18,18],[18,19],[18,20],[19,19],[19,20],[20,20],[20,21],[21,21],[21,22],[22,22],[22,23],[23,23],[23,24],[24,24],[24,25],[25,25],[25,26],[26,26],[26,27],[27,27],[27,28],[28,28],[28,29],[29,29]]
Cualquier otro par de enteros sería una puntuación de bádminton no válida.
Reglas de desafío:
- I / O es flexible, entonces:
- Puede tomar la entrada como una lista de dos números; dos números separados a través de STDIN o parámetros de función; dos cuerdas etc.
- La salida será tres valores distintos y únicos de su propia elección. Puede ser números enteros (es decir
[0,1,2]
,[1,2,3]
,[-1,0,1]
, etc.); pueden ser booleanos (es decir[true,false,undefined/null/empty]
); pueden ser caracteres / cadenas (es decir["valid & ended","valid","invalid"]
); etc. - ¡Especifique la E / S que utilizó en su respuesta!
- Se le permite tomar los enteros de entrada ordenados de menor a mayor o viceversa.
- Los enteros de entrada pueden ser negativos, en cuyo caso, por supuesto, no son válidos.
Reglas generales:
- Este es el código de golf , por lo que 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.
Casos de prueba:
Estos casos de prueba son válidos y el conjunto ha finalizado:
0 21
12 21
21 23
28 30
29 30
Estos casos de prueba son válidos, pero el conjunto aún está en juego:
0 0
0 20
12 12
21 21
21 22
Estos casos de prueba no son válidos:
-21 19
-19 21
-1 1
12 22
29 31
30 30
42 43
1021 1021
b-61<~a<a>b/22*b-3
), puede guardar 3 bytes.lambda a,b:-(a<0)|cmp(2+max(19,a)%30-a/29,b)
JavaScript (ES6),
55 5348 bytes(a)(b)
Pruébalo en línea!
fuente
C # (compilador interactivo de Visual C #) ,
5352 bytesLlamado como
f(max)(min)
. Devuelve 3 para inválido, 1 para terminado, 2 para en curso.Guardado 1 byte gracias a Kevin Cruijjsen
Pruébalo en línea!
fuente
Jalea , 25 bytes
Pruébalo en línea!
Argumento a la izquierda: mínimo. Argumento correcto: máximo.
No válido:
0
. En curso:1
. Terminado:2
.Explicación:
fuente
VDM-SL , 80 bytes
Esta función toma los puntajes ordenados en orden ascendente y devuelve el conjunto vacío si el puntaje no es válido o el conjunto que contiene si el conjunto está completo (entonces {verdadero} si el conjunto está completo y es válido y {falso} si el conjunto está incompleto y válido)
Un programa completo para ejecutar podría verse así:
Explicación:
fuente
Java (JDK) ,
5948 bytesPruébalo en línea!
Devuelve una
Object
, que es elInteger
0
de los juegos no válidas y lasBoolean
strue
yfalse
para los juegos actuales y válidos para los juegos terminados válidos respectivamente. Toma el puntaje ordenado (y curry), con el puntaje más alto primero.-2 bytes
invirtiendo el cheque de fin de partido.-11 bytes
curry, utilizando operadores bit a bit y algunos trucos de autoboxing de tipo de retorno, gracias a @KevinCruijssenSin golf
fuente
APL (Dyalog Unicode) , SBCS de 35 bytes
Función infija tácita donde finalizó es 2, en curso es 1, inválido es 0, quedan puntuaciones más pequeñas y más grandes.
Pruébalo en línea!
Implementa las fórmulas matemáticas de Erik the Outgolfer combinadas en
y traducido directamente a APL (que es estrictamente asociativo a la derecha, por lo que evitamos algunos paréntesis):
Ahora es equivalente a para cualquier función infija , por lo que podemos simplificar⊣⎕⊢ ⎕ ⎕
cual es nuestra solución;
(,≡30 31|,)×(⊢<2+X)×1+⊢>X←29⌊20⌈1+⊣
:⊣
el argumento de la izquierda; uno más eso; máximo de 20 y eso; mínimo de 29 y eso; asignar eso a ; es el argumento correcto mayor (0/1) ?; agrega uno; ... multiplica lo siguiente por eso; dos más ; es el argumento correcto menor que eso (0/1); ... multiplica lo siguiente por eso; concatenar los argumentos; restos cuando se dividen entre estos números;1+
20⌈
29⌊
X←
X
⊢>
1+
(
)×
2+X
X
⊢<
(
)×
,
30 31|
,≡
¿son los argumentos concatenados idénticos a eso (0/1) ?;fuente
Asamblea x86, 42 bytes
Toma entrada
ECX
y seEDX
registra. Tenga en cuenta queECX
debe ser mayor queEDX
.Salidas a
EAX
, donde0
significa que el juego aún está encendido,1
representando que el juego terminó y-1
(también conocido comoFFFFFFFF
) que representa un puntaje no válido.O, más legible en Intel Syntax:
Dato curioso: esta función casi sigue las reglas de la Convención de llamada C sobre qué registros conservar, excepto que tuve que bloquear
EBX
para guardar algunos bytes en el uso de la pila.Opcional (no incluido en el conteo de bytes)
Al agregar los siguientes 6 bytes directamente antes del inicio del código anterior, puede pasar
ECX
yEDX
ordenar:Que es lo siguiente en Intel Syntax legible:
fuente
Retina 0.8.2 , 92 bytes
Pruébalo en línea! El enlace incluye casos de prueba. Toma entrada en orden ascendente. Explicación: La primera etapa simplemente convierte de decimal a unario para que los puntajes se puedan comparar correctamente. La segunda etapa contiene seis patrones alternativos, agrupados en tres grupos para que se puedan generar tres valores distintos, que son
10
para ganar,01
para continuo y00
para ilegal. Los patrones son:fuente
APL (Dyalog Unicode) ,
3332 bytes SBCSPruébalo en línea!
en: un par en orden descendente
fuera: 2 = en curso, 1 = finalizado, 0 = inválido
pruebas robadas de la respuesta de Adám
fuente
Bash 4+,
97899188 bytesSuponga que las entradas son ascendentes. Conceptos usados de la respuesta VDM-SL . Pruébelo en línea
z==0
- juego en progresoz==1
- juego completadoz==2
- no válido-8 por la limpieza del soporte de las
(( & | ))
condiciones+2 arreglando un error, gracias a Kevin Cruijssen
-3 mejoras lógicas por Kevin Cruijssen
fuente
1
lugar de2
para0 30
. Su versión de 97 bytes funcionaba correctamente, por lo que si no puede solucionarlo, siempre puede revertirlo. Upvoted para esa versión 97. :)29 30
:( debería "completarse"i>29
deberían estarj>29
en el segundo ternario para arreglarlo.