Ecrivez une fonction ou un programme qui prend en entrée une chaîne et affiche une valeur de vérité si la chaîne est un pangram (une séquence de lettres contenant au moins une lettre de chaque lettre de l'alphabet anglais), sinon une valeur de Falsey.
Le cas des lettres devrait être ignoré; Si la chaîne est abcdefghijklmnopqrstuvwXYZ
, alors la fonction devrait toujours renvoyer une valeur de vérité. Notez que la chaîne peut contenir d'autres caractères, elle 123abcdefghijklm NOPQRSTUVWXYZ321
renverrait donc une valeur de vérité. Une entrée vide devrait renvoyer une valeur de falsey.
Cas de test
AbCdEfGhIjKlMnOpQrStUvWxYz
==> True
ACEGIKMOQSUWY
BDFHJLNPRTVXZ
==> True
public static void main(String[] args)
==> False
The quick brown fox jumped over the lazy dogs. BOING BOING BOING
==> True
C'est du code golf. Les règles standard s'appliquent. Le code le plus court en octets gagne.
code-golf
string
decision-problem
Arcturus
la source
la source
Réponses:
Pyth, 7 octets
Explication:
Essayez la version complète du programme sur une seule ligne ici .
la source
L!-Grb0
.!-Grs.z0
serait également travailler mais est plus long.Perl 6 , 20 octets
usage:
J'ai utilisé la version française
⊆
de l'U+2286 SUBSET OF OR EQUAL TO
opérateur (3 octets ) au lieu de la version texas de 4 octets,(<=)
qui aurait également nécessité un espace supplémentaire.la source
GS2,
11 à9 octetsMerci à @MitchSchwartz pour le golf de 2 octets!
Le code source utilise le codage CP437. Essayez-le en ligne!
Comment ça marche
la source
m2
(\xe9
) enregistre 2 octets.JavaScript ES6, 51
57Éditer 6 octets sauf thx @ user81655
Extrait de test
la source
a.replace(/[^A-Z]|[^a-z]/g,'')
oua.replace(/[^A-Z]/gi,'')
travaillerait?A
eta
doit devenir le même personnage, sinon l'ensemble les conservera comme distinct et la taille sera> 26[...a.toUpperCase().replace(/[^A-Z]/g,'')].length>25
?R
50,4639 octetsEditer supprime le besoin
tolower
en ajoutantignore.case=TRUE
(T
)la source
ignore.case=TRUE (T)
être inclus dans le décompte?T
la fin, grâce à la correspondance de placement d'argument, il n'est pas nécessaire de spécifier le nom de l'argument (etT
c'est l'alias par défautTRUE
). Le code écrit ici effectue l'action nécessaire tel quel, sans rien ajouter.O, 11 octets
Essayez-le en ligne.
Malheureusement, O n'a pas mis la différence: /
Explication
la source
Julia, 38 octets
C’est simple:
lowercase
traite du problème des majuscules / minuscules,'a':'z'
contient toutes les lettres minuscules,∩
est une intersection, supprime tout caractère qui n’est pas une lettre et, car'a':'z'
vient en premier, n’aura qu’une lettre de chaque lettre qui apparaîts
.endof
est le moyen le plus court d’obtenir la longueur du tableau résultant, et s’il est 26, c’est un pangram (il ne peut pas être plus de 26 et>25
enregistre un octet par rapport à==26
).la source
Python 2,
5351 octetsSolutions alternatives:
Merci à xnor d’ avoir fait remarquer que les ensembles ont un
<=
opérateur, pour un autre 51:la source
lambda s:set(range(65,91))<=set(map(ord,s.upper()))
, également pour 51.p=lambda s:{*range(65,91)}<={*map(ord,s.upper())}
. En passant, je n'arrive pas à trouver de règles pour déterminer si unlambda
besoin doit être attribué (comme dans votre premier cas) ou non (comme dans les derniers). Aidez-moi?Rétine , 22 octets
Essayez-le en ligne.
La première ligne correspond à toute lettre qui n'apparaît pas plus tard dans la chaîne. Cela garantit que nous ne correspondons pas à chaque lettre au plus une fois, peu importe la fréquence. Le mode de correspondance remplacera par défaut la chaîne par le nombre de correspondances trouvées. Donc, dans la deuxième étape, nous comparons
26
le résultat de la première entrée, ce qui donnera l’un0
ou l’ autre1
, selon que nous ayons trouvé le maximum de 26 matches ou non.la source
Minkolang 0,14 , 18 octets
Essayez ici.
Explication
la source
Python 3.5, 47 octets
Même principe que la réponse de Mitch Schwartz , mais utilisant les améliorations de décompression PEP 0448
*
, introduites pour la première fois dans Python 3.5.Cette version diffère légèrement de ce que j'ai écrit dans mon commentaire au message de Mitch, en ce sens que je transforme les nombres en lettres plutôt que l'inverse. C'est parce que c'est comme ça que j'ai écrit mes tentatives initiales pour trouver une solution, avant de découvrir que je ne pouvais pas battre le golfe de Mitch sans copier son approche. Alors considérez que modifiez mon dernier lambeau d’originalité!
la source
Ruby,
4133Usage
Merci à Vasu Adari pour m'avoir sauvé 8 octets
la source
R,
5345 octetsAncienne version à 53 octets:
Usage:
la source
MATLAB / Octave ,
3533 octetsEssayez-le en ligne!
La fonction anonyme renvoie un 1 logique si l'entrée
x
est un pangram, ou un 0 logique si ce n'est pas le cas.Il utilise essentiellement la même approche que la solution Pyth @ ThomasKwa. Différence définie entre tous les caractères de la plage d'alphabet en majuscule (
65:91
) et la chaîne de saisie (convertie en majuscule). Tous les caractères figurant dans l'alphabet mais pas dans la chaîne d'entrée sont renvoyés parsetdiff
. Ce n'est que si le tableau renvoyé par la différence définie est vide que la chaîne est un pangram.L'utilisation de majuscules au lieu de minuscules permet d'économiser quelques octets par rapport à l'utilisation de
'a':'z'
la valeur ASCII pour créer la plage.la source
Haskell ,
59565351 octetsEssayez-le en ligne!
Explication:
Indiquez une chaîne d'entrée
s
. Pour chaquea
plage comprise entre 65 et 90 (les codes ASCIIA
deZ
), il est vérifié si un caractères
est égal àa
(le caractère majuscule) oua+32
(le caractère minuscule), converti en caractère partoEnum
. Cela génère une liste de booléens.and
vérifie s'ils sont tousTrue
.Ancienne version:
Pour chaque lettre de l'alphabet en majuscule, vérifiez si une lettre
s
en majuscule lui correspond.any(==a)s
est identique àelem a s
mais permet de modifier les éléments d's
avant la comparaison - dans ce cas, convertissez-les en majuscules.la source
Japt , 14 octets
Essayez-le en ligne!
Comment ça marche
la source
CJam, 11 octets
Ceci est un programme complet. Essayez-le en ligne .
Explication:
la source
Javascript,
110109999593 octetsSauvé 6 octets grâce à Thomas Kwa et 10 grâce en partie à ev3.
la source
for(i=65;i++<91;)b+=!~a.indexOf(String.fromCharCode(i));alert(!b)
?05AB1E , 4 octets (probablement non concurrents)
Essayez-le en ligne!
la source
2sable ,
65 octetsVersion 6 octets:
Essayez-le en ligne!
Explication:
Version 5 octets, inspirée de la réponse 05AB1E de carusocomputing :
Essayez-le en ligne!
Explication:
la source
Brachylog , 4 octets
Essayez-le en ligne!
la source
TeaScript , 12 octets
Premier post TeaScript depuis que j'ai tué TeaScript: p
Essayez-le en ligne
Ungolfed
la source
JavaScript ES6,
124114113 octetsJe suis sûr que cela peut être joué plus au golf.
Génère une fonction anonyme.
la source
C, 107 octets
la source
ES6, 68 octets
Cette chaîne a l'air terriblement inutile, mais je ne connais pas de meilleur moyen.
la source
s=>[...Array(x=9,26)].every(z=>RegExp((++x).toString(36),"i").test(s))
Scala,
594846 octetsla source
Bash,
4542 octetsProgramme de 41 octets, plus 1 car il doit être appelé avec
bash -e
:Étonnamment, j'ai réussi une réponse Bash sans caractères de citation! (oui, j'ai vérifié avec les entrées commençant par
-f
et similaire).Cela suppose des paramètres régionaux où les lettres anglaises minuscules sont contiguës de
a
àz
. La saisie s'effectue via le premier argument du programme.En procédant ainsi
$i
, nous vérifions , pour chaque lettre alphabétique , si la chaîne contient$i
ou son équivalent en majuscule${i^}
en supprimant tous les autres caractères. S'il en résulte une chaîne vide, l'entrée ne contenait pas cette lettre et nous sortons avec1
(false). Si nous obtenons un résultat non vide, nous passons le test et passons à la lettre suivante. Si la chaîne d'entrée contient toutes les lettres anglaises, nous atteindrons la fin du programme et nous quitterons donc avec0
(true).la source
Perl 5, 33 octets
la source
-pl61e '$i=$_;map$\*=$i=~/$_/i,a..z}{'
.PlatyPar , 14 octets
Explication (fonctionnalité de visualisation de pile à venir bientôt!):
Si j'avais une fonction ridicule "pousser toutes les lettres de l'alphabet" ce serait 10 ...
Essayez-le en ligne !
la source
Pyke, 6 octets
Essayez-le ici!
la source