Un dé occidental traditionnel est un cube, sur lequel les entiers 1 à 6 sont marqués sur les faces. Les paires qui s'ajoutent à 7 sont placées sur des faces opposées.
Comme il s'agit d'un cube, nous ne pouvons voir qu'entre 1 et 3 faces (inclus) 1 à un moment donné. Les visages opposés ne peuvent jamais être vus en même temps.
Votre tâche consiste à écrire un programme ou une fonction qui, à partir d'une liste d'entiers représentant les côtés d'un dé, détermine s'il est possible de voir ces faces en même temps.
1 D'accord, vous pouvez peut-être voir 4 ou 5 visages avec une paire d'yeux, mais dans le cadre de ce défi, nous observons le dé à partir d'un seul point.
Règles:
- Votre soumission peut supposer la liste d'entrée:
- N'est pas vide.
- Ne contient que des valeurs satisfaisantes
1 ≤ n ≤ 6
. - Ne contient aucun élément en double.
- Vous ne pouvez pas supposer que l'entrée est triée.
- Votre soumission doit produire une valeur de vérité / fausse : la vérité est que les visages peuvent être vus en même temps, la fausse sinon.
- Il s'agit de code-golf , donc la réponse la plus courte (en octets) l'emporte!
- Les failles standard sont interdites par défaut.
Cas de test
Vérité:
[6] (One face)
[6, 2] (Share a side)
[1, 3] (Share a side)
[2, 1, 3] (Share a vertex)
[3, 2, 6] (Share a vertex)
Faux:
[1, 6] (1 and 6 are opposite)
[5, 4, 2] (2 and 5 are opposite)
[3, 1, 4] (3 and 4 are opposite)
[5, 4, 6, 2] (Cannot see 4 faces)
[1, 2, 3, 4, 5, 6] (Cannot see 6 faces)
code-golf
decision-problem
FlipTack
la source
la source
Réponses:
Python 2 , 35 octets
Essayez-le en ligne!
la source
JavaScript (ES6),
38 34 30 2928 octetsPrend l'entrée comme n'importe quel nombre de paramètres distincts. Renvoie
0
ou1
.Cas de test
Afficher l'extrait de code
Comment?
Vous trouverez ci-dessous des versions simplifiées de l'expression principale en fonction du nombre de paramètres fournis, les variables non définies étant contraintes à 0 ou à false :
NB : L'ordre de (a, b, c) n'a pas d'importance car ils sont toujours XOR ensemble.
Le cas le plus délicat est le 3ème. Voici un tableau montrant toutes les combinaisons possibles:
Alt. version # 1, 32 octets
Prend l'entrée comme un tableau. Renvoie un booléen.
Cas de test
Afficher l'extrait de code
Alt. version # 2, Chrome / Firefox, 34 octets
Celui-ci abuse des méthodes de tri de Chrome et Firefox. Cela ne fonctionne pas avec Edge.
Prend l'entrée comme un tableau. Renvoie
0
ou1
.Cas de test
Afficher l'extrait de code
la source
Haskell , 24 octets
-3 octets grâce à H.PWiz.
Essayez-le en ligne!
Explication
la source
APL (Dyalog) , 7 octets
Essayez-le en ligne!
∘.+⍨
- table d'addition (chaque élément avec chaque élément)7∊
- 7 existe?~
- nierAPL (Dyalog) , 7 octets
Essayez-le en ligne!
7-⊢
- soustrayez chaque élément de 7⊢∩
- intersecte avec le tableau d'origine⍬≡
- vide?la source
R , 27 octets
merci à Gregor pour avoir corrigé un bug
Essayez-le en ligne!
Port de la réponse de Chas Brown . Le fait d'avoir des opérations vectorisées permet de raccourcir ce délai en R.
la source
(7-d)
, d'autres sages ontd%in%d
priorité.Mathematica, 20 octets
Le
est\[Function]
-12 octets de Martin Ender
-7 octets de Misha Lavrov
Essayez-le en ligne!
la source
Haskell , 26 octets
Essayez-le en ligne!
la source
Pyth , 5 octets
Essayez-le ici.
la source
En fait , 8 octets
Essayez-le en ligne! (exécute tous les cas de test)
Explication:
la source
Husk , 5 octets
Essayez-le en ligne!
Explication
la source
Rétine ,
2120 octetsEssayez-le en ligne! Le lien inclut des cas de test. Edit: 1 octet enregistré grâce à @MartinEnder. Explication:
Triez l'entrée.
Recherchez une paire de côtés opposés (tri 3 et 4 côte à côte). Cela renvoie 1 pour un dé invalide ou 0 pour un dé valide.
Niez logiquement le résultat.
la source
Gelée , 5 octets
Essayez-le en ligne!
Port de la réponse de Chas Brown .
Explication
la source
Alice , 18 octets
Essayez-le en ligne!
Imprime
Jabberwocky
pour des entrées valides et rien d'autre.Explication
Dépliant le flux de contrôle en zigzag, le programme est vraiment juste:
la source
Pyth , 5 octets
Suite de tests.
isaacg a enregistré un octet!
la source
Rubis ,
36 31 2423 octetsEssayez-le en ligne!
C'était si simple que je cherchais constamment la solution au mauvais problème.
la source
05AB1E , 5 octets
Essayez-le en ligne!
Explication
Une des nombreuses façons de le faire en 5 octets dans 05AB1E
la source
Perl 5 , 51 + 1 (
-a
) = 52 octetsEssayez-le en ligne!
la source
3 1 4
donne vrai, qu'en est-ilsay 1>grep{$x=$_;grep$_+$x==7,@F}@F
Rétine , 20 octets
Essayez-le en ligne!
Une alternative à l'approche de Neil.
Explication
Tourner
6
,5
,4
en1
,2
,3
respectivement.Essayez de trouver des caractères répétés et comptez le nombre de correspondances.
Assurez-vous que le résultat était nul (en fait une négation logique).
la source
Java (OpenJDK 8) , 43 octets
Essayez-le en ligne!
la source
GNU sed ,
3722 + 1 = 23 octets+1 octet pour le
-r
drapeau. Prend la saisie sous forme de chiffres; imprime l'entrée pour véridique et0
pour fausse.-10 octets grâce à @MartinEnder.
Essayez-le en ligne!
Explication
Similaire à la réponse Alice de @ MartinEnder .
la source
Perl 6 , 18 octets
Essayez-le en ligne!
1 & 6 | 2 & 5 | 3 & 4
est une jonction composée des nombres 1 et 6, OU des nombres 2 et 5, OU des nombres 3 et 4. Cette jonction est un élément de (∈
) la liste d'entrée*
si elle contient 1 et 6, ou 2 et 5, ou 3 et 4. Ce résultat est ensuite nié (!
) pour obtenir la valeur booléenne requise.la source
Haskell,
46 4137 octetsPrend le produit cartésien de la liste avec lui-même, puis vérifie si toutes les listes résultantes ne totalisent pas 7. (Si l'une d'elles est additionnée à 7, les faces opposées seraient visibles et "toutes ne sont pas" est plus courte que "non tout faire ".)
la source
J , 12 octets
C'est à peu près la même chose que la première solution APL d'Uriel
Essayez-le en ligne!
la source
Formule IBM / Lotus Notes, 7 octets
Prend l'entrée d'un champ numérique à valeurs multiples i.
Soustrait récursivement chaque valeur de i de 7 et vérifie si elle se trouve dans la liste d'origine. ! change le 1 s'il est à 0 (les visages ne peuvent pas tous être vus).
Cas de test (pas de TIO disponible pour la formule Notes)
la source
Nettoyer , 49 octets
Essayez-le en ligne!
la source
Swift , 46 octets
Prend l'entrée comme
[Int]
(tableau d'entiers) et renvoie unBool
(booléen).Brève explication (non golfée)
la source
Clojure ,
898072 octets-9 octets car j'ai réalisé que l'utilisation de
reduced
est inutile-8 octets en passant de l'utilisation
reduce
à l'utilisationsome
J'ai essayé d'écrire ceci sans regarder les astuces utilisées par les autres réponses. Je pourrai peut-être améliorer cela plus tard.
Renvoie
true
les cas réels,false
si l'unnil
des côtés est égal à 7 et si le nombre de côtés est illégal.la source