Introduction:
J'ai vu qu'il n'y avait qu'un seul autre défi lié au badminton en ce moment . Depuis que je joue au badminton moi-même (depuis 13 ans maintenant), je me suis dit que j'ajouterais des défis liés au badminton. Voici le premier:
Défi:
Entrée: Deux entiers
Sortie: L'une des trois sorties distinctes et uniques de votre choix. L'un indiquant que l'entrée est un score de badminton valide ET l'ensemble s'est terminé avec un gagnant; un indiquant que l'entrée est un score de badminton valide ET l'ensemble est toujours en jeu; celui indiquant que l'entrée n'est pas un score de badminton valide.
Avec le badminton, les deux (paires de) joueurs commencent avec 0 point, et vous vous arrêtez lorsque l'un des deux (paires de) joueurs a atteint un score de 21, avec au moins 2 points de différence, jusqu'à un maximum de 30-29.
Ce sont donc toutes les paires d'entrées possibles (dans l'un ou l'autre ordre) indiquant que c'est un score de badminton valide ET que l'ensemble est terminé:
[[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]]
Et ce sont toutes les paires d'entrées possibles (dans l'un ou l'autre ordre) indiquant qu'il s'agit d'un score de badminton valide MAIS l'ensemble est toujours en jeu:
[[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]]
Toute autre paire d'entiers serait un score de badminton invalide.
Règles du défi:
- Les E / S sont flexibles, donc:
- Vous pouvez prendre l'entrée comme une liste de deux nombres; deux nombres séparés via STDIN ou paramètres de fonction; deux cordes; etc.
- La sortie sera trois valeurs distinctes et uniques de votre choix. Peut être des entiers (c.
[0,1,2]
-à[1,2,3]
-d[-1,0,1]
.,, Etc.); peut être booléen (ie[true,false,undefined/null/empty]
); peut être des caractères / chaînes (ie["valid & ended","valid","invalid"]
); etc. - Veuillez spécifier les E / S que vous avez utilisées dans votre réponse!
- Vous êtes autorisé à prendre les entiers d'entrée précommandés du plus bas au plus élevé ou vice-versa.
- Les entiers d'entrée peuvent être négatifs, auquel cas ils sont bien sûr invalides.
Règles générales:
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues autres que le golf de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. - Des règles standard s'appliquent à votre réponse avec des règles d'E / S par défaut , vous êtes donc autorisé à utiliser STDIN / STDOUT, des fonctions / méthodes avec les paramètres appropriés et des programmes complets de type retour. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code (par exemple TIO ).
- De plus, l'ajout d'une explication à votre réponse est fortement recommandé.
Cas de test:
Ces cas de test sont valides et l'ensemble est terminé:
0 21
12 21
21 23
28 30
29 30
Ces cas de test sont valides, mais l'ensemble est toujours en jeu:
0 0
0 20
12 12
21 21
21 22
Ces cas de test ne sont pas valides:
-21 19
-19 21
-1 1
12 22
29 31
30 30
42 43
1021 1021
b-61<~a<a>b/22*b-3
), vous pouvez économiser 3 octets.lambda a,b:-(a<0)|cmp(2+max(19,a)%30-a/29,b)
JavaScript (ES6),
55 5348 octets(a)(b)
Essayez-le en ligne!
la source
C # (Visual C # Interactive Compiler) ,
5352 octetsAppelé comme
f(max)(min)
. Renvoie 3 pour invalide, 1 pour terminé, 2 pour en cours.1 octet enregistré grâce à Kevin Cruijjsen
Essayez-le en ligne!
la source
Gelée , 25 octets
Essayez-le en ligne!
Argument de gauche: minimum. Argument de droite: maximum.
Non valide:
0
. En cours:1
. Terminé:2
.Explication:
la source
VDM-SL , 80 octets
Cette fonction prend les scores ordonnés dans l'ordre croissant et renvoie l'ensemble vide si le score n'est pas valide ou l'ensemble contenant si l'ensemble est complet (donc {true} si l'ensemble est complet et valide et {false} si l'ensemble est incomplet et valide)
Un programme complet à exécuter pourrait ressembler à ceci:
Explication:
la source
Java (JDK) ,
5948 octetsEssayez-le en ligne!
Renvoie un
Object
, qui est respectivementInteger
0
pour les jeux non valides et lesBoolean
strue
etfalse
pour les jeux en cours valides et pour les jeux terminés valides. Prend le score ordonné (et curry), avec le score le plus élevé en premier.-2 bytes
en inversant le contrôle de fin de match.-11 bytes
en curry, en utilisant des opérateurs au niveau du bit, et quelques tromperies de type retour automatique - grâce à @KevinCruijssenNon golfé
la source
APL (Dyalog Unicode) , 35 octets SBCS
Infixez la fonction tacite où la fin est 2, la valeur en cours est 1, la valeur invalide est 0, des scores plus petits et plus grands sont laissés.
Essayez-le en ligne!
Implémente les formules mathématiques d'Erik l'Outgolfer combinées en
et traduit directement en APL (qui est strictement associatif à droite, donc nous évitons certaines parenthèses):
qui est notre solution;
(,≡30 31|,)×(⊢<2+X)×1+⊢>X←29⌊20⌈1+⊣
:⊣
1+
20⌈
29⌊
X←
X
⊢>
1+
(
)×
2+X
X
⊢<
(
)×
,
30 31|
,≡
la source
Assemblage x86, 42 octets
Prend entrée
ECX
etEDX
registres. Notez que celaECX
doit être supérieur àEDX
.Sorties dans
EAX
, où0
signifie que le jeu est toujours activé,1
représentant la fin du jeu et-1
(akaFFFFFFFF
) représentant un score non valide.Ou, plus lisible dans Intel Syntax:
Fait amusant: cette fonction suit presque les règles de la convention d'appel C sur les registres à conserver, sauf que j'ai dû clobber
EBX
pour économiser quelques octets sur l'utilisation de la pile.Facultatif (non inclus dans le nombre d'octets)
En ajoutant les 6 octets suivants directement avant le début du code ci-dessus, vous pouvez passer
ECX
etEDX
non ordonné:Qui est la syntaxe Intel lisible suivante:
la source
Retina 0.8.2 , 92 octets
Essayez-le en ligne! Le lien inclut des cas de test. Prend la saisie dans l'ordre croissant. Explication: La première étape passe simplement de la décimale à l'unaire afin que les scores puissent être correctement comparés. La deuxième étape contient six modèles alternatifs, regroupés en trois groupes afin que trois valeurs distinctes puissent être sorties, qui sont
10
pour gagner,01
pour en cours et00
pour illégales. Les motifs sont les suivants:la source
APL (Dyalog Unicode) ,
3332 octets SBCSEssayez-le en ligne!
dans: une paire en ordre décroissant
out: 2 = en cours, 1 = terminé, 0 = invalide
tests volés à la réponse d' Adám
la source
Bash 4+,
97899188 octetsSupposons que les entrées augmentent. Concepts utilisés de VDM-SL réponse . Essayez-le en ligne
z==0
- jeu en coursz==1
- jeu terminéz==2
- invalide-8 par nettoyage du support des
(( & | ))
conditions+2 correction d'un bug, merci à Kevin Cruijssen
-3 améliorations logiques par Kevin Cruijssen
la source
1
au lieu de2
pour0 30
. Votre version de 97 octets fonctionnait correctement, donc si vous ne parvenez pas à le corriger, vous pouvez toujours annuler. A voté pour cette version 97. :)29 30
:( il devrait être "terminé"i>29
devrait êtrej>29
dans le deuxième ternaire pour le réparer.