introduction
Briscola est l'un des jeux de cartes les plus populaires d'Italie. C'est un jeu de cartes astucieux, comme Bridge. Briscola est bien connue pour son système de points bizarre. Dans ce défi, compte tenu de deux cartes, vous obtiendrez si la première marque plus, moins ou le même nombre de points que la seconde dans le système de points de Briscola.
Défi
Briscola se joue avec un jeu de cartes à jouer italiennes. Il y a quarante cartes dans un jeu, 1-10 dans chacune des quatre couleurs: coupes, épées, massues et pièces. Nous ignorerons les combinaisons pour ce défi. Les cartes 2 à 7 sont les cartes numériques et les cartes 8, 9 et 10 sont les cartes face. Le classement des cartes, du plus haut au plus bas, est le suivant:
+------------------------+-------------+
| Cards, by Rank | Point Value |
+------------------------+-------------+
| Ace (1) | 11 |
| Three (3) | 10 |
| King (10) | 4 |
| Knight (9) | 3 |
| Jack (8) | 2 |
| Numeric Cards (2, 4-7) | 0 |
+------------------------+-------------+
Merci à Orphevs pour la belle table! :)
Votre tâche consiste à créer un programme ou une fonction complète qui accepte deux nombres de 1 à 10 représentant les rangs des cartes et affiche (ou renvoie) si la valeur en points de la première carte est supérieure, inférieure ou égale à la valeur en points de la deuxième carte. Notes complémentaires:
- Votre programme peut générer trois valeurs quelconques pour indiquer inférieur à, supérieur à et égal à, cependant, il doit générer la même valeur pour chaque condition à chaque fois.
- Votre programme peut utiliser tous les paramètres par défaut IO .
- Les failles standard ne sont pas autorisées.
- Une fonction complète ou un programme est autorisé.
Cette question est code-golf , donc le nombre d'octets le plus bas l'emporte.
Voici quelques exemples d'entrées et de sorties:
1, 4 => plus que (l'as réussit 11 points, 4 marque 0 points, le premier est plus que le second. 8, 3 => moins de (8 scores 2, 3 scores 10, le premier est inférieur au second. 5, 2 => égal (5 et 2 marquent tous les deux 0)
Si vous avez des questions, n'hésitez pas à demander. Bonne chance!
la source
Réponses:
Gelée ,
1211 octetsEssayez-le en ligne!
Sorties
0
pour égal,-1
pour supérieur et1
inférieur à. Utilise l'index de page de code“®µ½¤¢‘
qui est évalué[8, 9, 10, 3, 1]
.Prend l'entrée comme une paire de cartes. À utiliser
1,2
comme exemple.la source
MATL , 12 octets
L'entrée est un tableau de deux nombres. La sortie est
-1
,0
et1
respectivement pour plus , égale à ou inférieure .Essayez-le en ligne!
Explication
Considérez la saisie
[1 4]
comme exemple.la source
JavaScript (ES6), 42 octets
Prend les deux rangs dans la syntaxe de curry
(a)(b)
. Renvoie 1 pour plus de , -1 pour moins de ou 0 pour égal .Essayez-le en ligne!
Utilisation d'une formule, 48 octets
C'est certainement plus long que d'utiliser une table de recherche, mais aussi un peu plus intéressant.
Même format d'E / S.
Essayez-le en ligne!
Comment?
Nous voulons maintenant transformer les valeurs non nulles restantes de manière à ce qu'elles puissent être triées dans le bon ordre. Nous utilisons:
la source
Japt ,
252116 octetsEssayez-le en ligne!
la source
-g
indicateur pour enregistrer 2 octets.-g
drapeau, si vous voulez l'essayer).[8,9,10,3,1]
tableau et la conversion de base)Japt
-g
, 13 octetsSorties
-1
pour>
,1
pour<
et0
pour===
.Essayez-le ou exécutez plusieurs tests (la deuxième ligne reproduit la fonctionnalité de l'
-g
indicateur pour permettre aux indicateurs d'être utilisés pour traiter plusieurs entrées)Explication
la source
R , 35 octets
Essayez-le en ligne!
Le programme revient
2
pour'greater than'
,1
pour'less than'
,1.5
pour'equal'
Explication:
la source
rank(c(6,0,5,1:4*0,1:3)[scan()])[1]
(programme complet) vous fera économiser 6 octetsJava 8,
6966 octetsLambda prenant des paramètres dans la syntaxe de curry, port de la réponse JavaScript d' Arnauld .
Retours
0.0
égaux ,1.0
pour plus que , et-1.0
pour moins . Essayez-le en ligne ici .Merci à Kevin Cruijssen d' avoir joué au golf 3 octets.
la source
"05040000123".charAt(...)
au lieu du tableau entier:a->b->Math.signum("05040000123".charAt(a)-"05040000123".charAt(b))
MarioLANG ,
578 548530 octetsEssayez-le en ligne!
Explication:
0
(pas d'entrée). Cela suppose qu'il n'y aura que deux valeurs strictement positives en entrée.[1-5]
pour aider à calculer quelle carte a le plus de valeurs en points.1
si la première valeur ponctuelle est supérieure à la seconde,-1
si la deuxième valeur ponctuelle est supérieure à la première et0
si les valeurs ponctuelles sont identiques.la source
Python 2 , 41 octets
Sorties 1 pour plus de, -1 pour moins de, 0 pour égal.
Essayez-le en ligne!
la source
C (gcc) , 57 octets
Renvoie l'habituel [-1..1] pour <, = et>, respectivement.
Essayez-le en ligne!
la source
*s=L"...
place dechar*s="...
eta=(s[a]>s[b])-(s[a]<s[b])
au lieu dea=s[a];b=s[b];b=(a>b)-(a<b)
05AB1E , 14 octets
Retours
1
,-1
ou0
pour plus de; moins que; ou égaux respectivement.Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
PHP ,
5145 octetsEssayez-le en ligne!
Pour l'exécuter:
Exemple:
Remarque: Ce code utilise l'opérateur de vaisseau spatial de PHP 7 . Cela ne fonctionnera donc sur aucune version PHP avant 7.
Production:
card1 > card2
)card1 == card2
)card1 < card2
)Comment?
Identique à l'approche utilisée dans de nombreuses autres réponses, mais en PHP. Crée une carte de valeurs pour les cartes et en compare les valeurs. La position de la valeur sur la carte est la même que le numéro de la carte.
la source
Javascript ES2016 +, 73 caractères
Pas le plus court, mais j'espère intéressant en raison des mathématiques et du débordement :)
Et l'autre version avec 74 caractères, malheureusement:
Tester
Ouvrez la console du navigateur avant d'exécuter
la source