Les dés de lettres sont courants dans les jeux de mots. Il peut être amusant d'essayer d'épeler des mots drôles avec des dés de boggle, par exemple. Si vous attrapez une poignée de dés, il est probable que vous ne pourrez pas épeler certains mots. Ce défi est une généralisation de cette idée.
Défi
Étant donné une liste de dés qui ont chacun au moins 1 visage et un mot, votre tâche est de déterminer s'il est possible d'épeler ce mot en utilisant les dés donnés (dans ce cas, il devrait retourner un résultat véridique). Une seule lettre de chaque dé peut être utilisée et un dé ne peut être utilisé qu'une seule fois. Vous n'avez pas besoin d'utiliser tous les dés donnés.
Exemples
Dans un exemple trivial, avec les dés [[A], [C], [T]] et la chaîne CAT, le résultat est vrai. La BAT retournerait bien sûr faux car il n'y a pas de dés avec B dessus
Si donné [[A, E, I, O, U], [A, B, C, T], [N, P, R]] comme ensemble de dés, vous retourneriez vrai pour ART, TON et CUR , mais faux pour CAT, EAT et PAN car ces chaînes nécessitent la réutilisation des dés. Il devrait également être assez évident que CRAB ne peut pas être orthographié avec ces dés car il n'y a pas assez de dés.
Si on donnait [[A, B, C], [A, E, I], [E, O, U], [L, N, R, S, T]] comme ensemble de dés, vous seriez en mesure de épeler CAT, BEE, BEAN, TEA, BEET et BAN, mais vous ne pourrez pas épeler LONE, CAB, BAIL, TAIL, BAA ou TON
Il peut y avoir des multiples du même dé. Si donné [[A, B, C], [A, B, C], [A, B, C]], vous seriez en mesure d'épeler CAB, BAA, AAA, etc ... mais évidemment rien sans A, B ou C dedans.
Règles
- Aucune exploitation des failles standard
- C'est le code-golf , donc le code le plus court l'emporte.
- Vous pouvez supposer que les mots et les dés ne seront composés que de majuscules.
- Vous pouvez supposer que le mot comptera toujours au moins 1 lettre et qu'il y aura toujours au moins 1 dé.
- Vous pouvez supposer qu'un dé n'aura jamais plus d'une même lettre.
- L'entrée et la sortie peuvent être dans n'importe quel format pratique.
la source
Réponses:
Brachylog , 5 octets
Essayez-le en ligne!
Nous utilisons la variable d'entrée pour les dés et la variable de sortie pour le mot. Il sort
true.
quand il est possible d'épeler le mot etfalse.
autrement.Explication
la source
Haskell ,
4844 octetsIl s'agit d'une fonction anonyme. Lié à un identifiant,
f
il peut être utilisé commef "ART" ["AEIOU", "ABCT", "NPR"]
, ce qui donneTrue
. Essayez-le en ligne!L'équivalent non ponctuel est
mapM id
sur une liste de listes utilise l'Monad
instance de liste et peut être considéré comme un choix non déterministe . Ainsi, par exemple, lesmapM id ["AB","123"]
rendements["A1","A2","A3","B1","B2","B3"]
.Pour chacune de ces combinaisons de dés, nous vérifions si la différence
(\\)
de liste du mot donné et de la combinaison donne une liste vide.la source
JavaScript (ES6), 68 octets
la source
EEE
.Python 2 , 82 octets
Essayez-le en ligne!
La chaîne de comparaison
w[0]in x>0<f(...)
est équivalente à:w[0]in x
etx>0
et0<f(...)
.Le second est toujours vrai (
str
>int
) et le troisième est équivalent àf(...)
, de sorte que le tout est une manière plus courte d'écrirew[0]in x and f(...)
la source
JavaScript (ES6), 74 octets
Prend une entrée dans la syntaxe de curry
(w)(a)
, où w est le mot que nous recherchons et a est une liste de chaînes décrivant les dés. Renvoie 0 ou 1 .Essayez-le en ligne!
Commenté
Nous transformons chaque permutation de sous-ensemble des dés en un modèle d'expression régulière et les testons par rapport au mot cible.
la source
Husk , 5 octets
Essayez-le en ligne!
Renvoie une valeur non nulle s'il est possible d'épeler le mot, zéro sinon.
Explication
la source
Perl 5
-plF
,4846 octets@DomHastings a enregistré 2 octets
Essayez-le en ligne!
Contribution:
Production:
0
pour un mot non validé. Tout entier positif pour un mot validéComment?
Cette explication examine le code dans l'ordre d'exécution, en fait de droite à gauche pour ce one-liner.
la source
JavaScript (Node.js) , 98 octets
Essayez-le en ligne!
En supposant qu'il y ait suffisamment de dés
JavaScript (Node.js) , 100 octets
Essayez-le en ligne!
JavaScript (Node.js) , 99 octets
Essayez-le en ligne!
la source
Gelée ,
109 octets-1 grâce à Erik l'Outgolfer (utilisez
w
plutôt queẇ@
>. <)Un lien dyadique acceptant une liste de listes de caractères à gauche (les dés) et une liste de caractères à droite (le mot) qui renvoie 1 si possible et 0 sinon.
Essayez-le en ligne! Ou consultez la suite de tests .
Comment?
Algorithme plus rapide (également 9 octets):
Un lien dyadique avec le même format d'entrée qui renvoie un entier positif (véridique) lorsque cela est possible et 0 (falsey) sinon.
la source
R ,
192 185 135 135 117 111109 octetsEssayez-le en ligne!
-2 caractères grâce à Giuseppe.
la source
F=
Pyth , 21 octets
Suite de tests
Explication:la source