introduction
Récemment, deux de mes amis et moi-même avons décidé de jouer aux cartes, et l'un d'eux a suggéré le jeu «Irish Snap», qui a été l'inspiration pour ce défi. Cependant, j'ai appris plus tard que le jeu a beaucoup de règles différentes avec lesquelles vous pouvez jouer, dont certaines sont répertoriées ici . Les règles qui sont dans ce défi ne sont pas actuellement répertoriées sur cette page, d'où le nom, «Règles de variantes»
Le défi
Étant donné un tableau de 3 cartes, produisez une valeur de vérité ou de falsey selon qu'elles effectuent un snap valide dans un jeu de snap irlandais.
Contribution
L'entrée sera un tableau de 3 nombres, allant de 1 à 13 inclus, 1 représentant un as, 11 représentant un valet, 12 représentant une reine et 13 représentant un roi. L'entrée peut être dans n'importe quel ordre de haut, milieu, bas.
Règles
Les 4 critères différents pour savoir si les cartes font un snap irlandais sont:
- Les cartes du haut et du milieu sont les mêmes
- Les cartes du haut et du milieu ont une différence d'un
- Les cartes du haut et du bas sont les mêmes
- Les cartes du haut et du bas ont une différence d'un
Si l'un de ces critères est rempli, vous devez générer une valeur véridique. En plus de cela, pour les deux critères qui exigent que les cartes aient une différence d'un, cela `` s'enroule '', ce qui signifie qu'un as et un roi sont considérés comme ayant une différence d'un, et vice versa.
Cas de test
Input (Bottom, Middle, Top) -> Output
1 13 7 -> False
1 4 13 -> True
9 3 6 -> False
8 9 7 -> True
2 6 5 -> True
12 5 11 -> True
10 4 8 -> False
12 13 7 -> False
9 7 10 -> True
7 3 1 -> False
4 2 3 -> True
la source
top, [middle, bottom]
?0
pourfalse
et tout autre entier pourtrue
ou, même, tout entier négatif pourfalse
ou tout entier positif pourtrue
?Réponses:
Python 3 , 38 octets
Essayez-le en ligne!
Renvoie un ensemble non vide (véridique) s'il est valide, un ensemble vide (falsey) sinon. Prend la saisie dans l'ordre haut-milieu-bas, mais peut être réorganisé pour la même taille de code.
la source
Perl 6 , 16 octets
Essayez-le en ligne!
Anonyme quel que soit lambda qui accepte l'entrée
top, middle, bottom
et renvoie une jonction qui a la valeur True ou Falsela source
<
qu'un espace blanc soit nécessaire avant , c'était l'occasion rêvée d'avoir un smiley de cœur.05AB1E ,
76 octetsEssayez-le en ligne!
Prend les entrées comme
[middle, bottom], top
.Seul 1 est vrai dans 05AB1E. 0! et 1! sont tous deux 1, alors qu'aucun autre nombre n'a une factorielle de 1.
la source
J , 12 octets
Essayez-le en ligne!
En bas au milieu comme argument gauche, en haut comme argument droit.
réponse originale prenant la saisie comme une seule liste
J , 24 octets
Essayez-le en ligne!
#:@3 5
Les nombres 3 et 5 en binaire sont0 1 1
et1 0 1
qui sont respectivement les masques pour les cartes milieu / haut et bas / haut(12||@-/)@#
Nous filtrons l'entrée avec ces masques, prenons la valeur abs des différences résultantes, puis le reste lorsqu'il est divisé par 12 (pour le cas ace-king)1 e.2>
l'un ou l'autre des nombres résultants est-il inférieur à 2, c'est-à-dire 0 ou 1?la source
JavaScript (ES6), 29 octets
Prend l'entrée comme
([bottom, middle])(top)
.La sortie est inversée.
Essayez-le en ligne!
JavaScript (ES6),
3730 octets1 octet enregistré grâce à @Grimy
Prend l'entrée comme
([bottom, middle])(top)
.Essayez-le en ligne!
la source
%144
pourrait être%72
%13
fonctionnerait également.Fusain , 12 octets
Essayez-le en ligne! Port de la réponse de @ Grimy. Prend l'entrée en trois valeurs distinctes bottom, middle, top et sorties en utilisant le format booléen par défaut de Charcoal pour
-
for true, rien pour false. Explication:la source
Perl 5
-ap
, 31 octetsEssayez-le en ligne!
Contribution:
En fait, l'ordre du milieu et du bas n'a pas d'importance.
Production:
0
pour faux;1
Pour de vraila source
Pyth ,
1211 octetsPrend l'entrée comme
[bottom, top, middle]
ou[middle, top, bottom]
(les deux fonctionnent). Sorties[]
(Falsy en Pyth) s'il n'y a pas de snap valide, sinon un tableau non vide.Essayez-le en ligne!
Si une valeur cohérente de vérité / fausse est requise, ajoutez-la
.A
devant pour +2 octets. La sortie sera alorsTrue
ouFalse
.Explication
Edit: -1 avec une approche différente
la source
Gelée , 6 octets
Essayez-le en ligne!
la source
C (gcc) ,
4743 octetsEssayez-le en ligne!
la source
Japt , 7 octets
Essayez-le
la source
Gelée , 6 octets
Essayez-le en ligne!
Un lien monadique prenant la liste
[middle, top, bottom]
comme argument et retournant1
pour snap et0
pour no snap.la source
T-SQL 2008, 40 octets
Essayez-le en ligne
la source
[R], 23 octets
prend l'entrée comme a = c (bas, haut, milieu):
any(abs(diff(a))%%12<2)
la source