Vous avez un ensemble de tuiles avec les symboles du tableau périodique. Chaque symbole apparaît une fois. Vous pensez à des mots à faire mais vous voulez savoir si c'est possible ou non.
Le défi
Écrivez un programme dans votre langue préférée qui prendra une chaîne comme paramètre d'entrée. Vous pouvez supposer que l'entrée n'est pas nulle, n'a pas d'espaces et se compose de caractères ASCII.
Votre programme doit prendre cette chaîne et produire une valeur véridique si ce mot peut être composé de symboles du tableau périodique des éléments, et une valeur de falsey si le mot ne le peut pas.
Pour rendre ce défi plus difficile, vous ne pouvez pas utiliser deux fois un symbole. Donc, si vous utilisez de l'azote, N
vous ne pouvez pas l'utiliser à N
nouveau dans le même mot.
Règles
Les échappatoires standard ne sont pas autorisées. Vous pouvez utiliser les symboles des éléments 1-118 (Hydrogène à Ununoctium). Vous pouvez trouver une liste de tous les éléments ici . Vous pouvez lire la liste des symboles dans un fichier ou saisir des arguments si vous le souhaitez.
Cas de test:
Laos - true (LaOs)
Amputation - true (AmPuTaTiON)
Heinous - true (HeINoUS)
Hypothalamus - true (HYPoThAlAmUS)
Singapore - true (SiNGaPoRe)
Brainfuck - true (BRaInFUCK)
Candycane - false
Il s'agit d'un défi de golf de code, le code le plus court gagne.
AVANT DE FERMER COMME DUPLICAT: Bien que cela puisse sembler similaire à ce défi , je pense que c'est différent car ce n'est pas 'Générer une liste de tous les mots qui sont possibles à partir du tableau périodique', c'est 'Prendre une entrée arbitraire et déterminer si il peut être fait à partir du tableau périodique »
Réponses:
05AB1E, 16 octets
Expliqué
Avertissement: extrêmement lent. Je recommande de tester sur un sous-ensemble d'éléments beaucoup plus petit dans l'interpréteur en ligne.
Prend la liste des éléments comme premier argument.
Prend le mot à tester comme deuxième argument.
Renvoie 1 pour vrai et 0 pour faux.
Essayez-le en ligne sur un petit sous-ensemble d'éléments
la source
Brachylog , 7 octets
Appelez avec la liste des symboles (tous en minuscules) comme entrée et le mot comme sortie, par ex.
run_from_atom('spc~@l.', ["he":"n":"o":"li"], "Nohe").
.Attention: cela est extrêmement inefficace lorsque tous les symboles sont dans la liste.
Explication
la source
JavaScript (Firefox 48 ou version antérieure), 103 octets
la source
Pyth - 13 octets
Vérifie simplement si une partition d'entrée en minuscules contient toutes les parties du tableau périodique.
Sur mobile, impossible de configurer une véritable suite de tests, mais essayez ceci .
la source
Pyth, 11 octets
Essayez-le en ligne. Suite de tests.
Écrit sur mon téléphone, mais devrait fonctionner. Très lent pour un grand nombre d'éléments ou une longue chaîne.
Explication
./
) de l'entrée (z
).S
) chaque partition (M
).R
), voyez si elle se trouve dans (}
) la liste de tous les sous-ensembles (y
) duS
tableau périodique trié ( ) donnée en entrée (Q
).s
) la liste résultante des booléens.la source