Nous voyons souvent des clips vidéo sur Youtube. De nombreuses chaînes Youtube qui hébergent des clips vidéo sont "propulsées par VEVO". Ceux-ci peuvent être facilement identifiés en intégrant VEVO à leurs vignettes vidéo et en ajoutant VEVO à leur nom de chaîne.
Maintenant, écrivez du code pour tester si une chaîne donnée par l'utilisateur est un compte utilisateur VEVO ou non.
Conditions requises pour les chaînes de compte d'utilisateur VEVO valides:
Ne doit contenir que des majuscules, des minuscules et des chiffres. (sans espace ni ponctuation)
Ne doit pas dépasser 80 caractères.
Doit avoir une sous-chaîne "VEVO" à la fin de la chaîne
Cas de test:
Entrées valides:
AdeleVEVO
ConnieTalbotVEVO
SHMVEVO
justimberlakeVEVO
DJMartinJensenVEVO
test123VEVO
Entrées non valides:
syam kapuk
jypentertainment
Noche de Brujas
testVEVO123
Bien sûr, comme il s'agit de code-golf , je recherche le code le plus court en utilisant n'importe quel langage de programmation.
la source
VEVO
etūņīčōdēVEVO
test123VeVo
et un avec plus de 80 caractèresạ
etẠ
et chiffres dans d'autres alphabets, par exemple九
(9)Réponses:
Python 2 , 45 octets
-3 octets grâce à Rod. -2 octets grâce aux ovs.
Essayez-le en ligne!
Une solution regex s'avère plus longue.
la source
Japt v2.0a0,
2016 octetsRenvoie
1
pour valide ou0
pour invalide.[\l\d]
fonctionnerait également à la place du[^\W_]
même nombre d'octets.Essayez-le | Vérifier tous les cas de test
Explication :
è
compte le nombre de correspondances du RegEx dans l'entrée. Dans Japt, la\w
classe RegEx n'inclut pas de soulignement.la source
;¥oB+mc)¯80 ©"VEVO"¥Ut4n
B+mc
:) Au fait, si Japt2 avait une classe de personnage[A-Za-z0-9]
, nous pourrions battre Retina ici! Pourrait même être une valeur impérieuses\w
et\W
.JavaScript (ES6),
27363431 octetsEnregistré 2 octets grâce à @Neil et 3 octets grâce à @Shaggy
Cas de test
Afficher l'extrait de code
la source
\w
correspond pas_
aussi bien à s?((?!_)\w)
sauve 2 octets.[^\W_]
pour une économie de 3 octets ?/^[^\W_]{0,76}VEVO$/.test
ou quelque chose?PHP , 51 octets
-10 octets grâce à @Ismael Miguel pour avoir utilisé
<?=
au lieu de<?php echo
! et supprimer la balise de fermetureEssayez-le en ligne!
Merci pour les autres réponses, donc je n'ai pas eu à écrire l'expression régulière!
la source
<?php echo
, vous pouvez le faire<?=preg_match("/^[^\W_]{0,76}VEVO$/",fgets(STDIN));
.[^\W_]
, utilisez simplement\w
, qui est le même que[a-zA-Z_]
.APL (Dyalog) , 25 octets
Essayez-le en ligne!
la source
C (gcc) , 83 octets
Essayez-le en ligne!
la source
return
déclaration, comment ça se passec
? Comportement indéfini?Dyalog APL , 47 octets
Essayez-le en ligne!
Une solution regex pure est de 32 octets , mais est également beaucoup plus ennuyeuse que cette approche.
la source
⍣¯1
pour vérifierVEVO
et avoir besoin du protecteur dfn, vous pouvez le faire'VEVO'≡¯4↑⍵
. Faire bouger les choses me fait un peu{('VEVO'≡¯4↑⍵)∧∧/⍵∊⎕D,⎕A,(819⌶)⎕A}
↑
.. Il existe cependant de meilleures façons de relever ce défi (c'est-à-dire la réponse d'Eriks) et j'aime cette idée: pGrime , 13 octets
Essayez-le en ligne!
Rien d'extraordinaire ici.
e
Faites correspondre l' entrée ntire avec le modèle: au plus 76n
caractères alphanumériques, suivis de la chaîneVEVO
. Imprime1
pour correspondance et0
pour aucune correspondance. Je me suis souvenu que la dernière citation pouvait être supprimée à la fin de la ligne, mais apparemment, cela provoque juste une erreur d'analyse.la source
C # (.NET Core) , 87 + 18 = 105 octets
Essayez-le en ligne!
la source
a=>a.All(x=>char.IsLetterOrDigit(x)&x<123)&a.Length<81&a.EndsWith("VEVO")
uniquement les lettres ASCII ou 67 + 18:a=>a.All(x=>char.IsLetterOrDigit(x))&a.Length<81&a.EndsWith("VEVO")
avec prise en charge Unicode> <> ,
147125 octetsEssayez-le en ligne!
> <> , 147 octets
Essayez-le en ligne!
Cela affiche 1 si la chaîne d'entrée est valide et rien pour une entrée non valide.
Édition 1: modification des vérifications alphanumériques pour utiliser des plages plutôt que de comparer avec chaque personnage. (économie de 22 octets)
la source
Bash,
532630 octetsQuittez le code 0 pour les résultats VALIDES et 1 pour les résultats INVALIDES.
Travaille toujours sur 80 caractères ou moins.-27 octets de suppression de sortie, grâce à @KeyWeeUsr
+4 octets, regex fixe (comme tout le monde)
Essayez-le en ligne!
la source
echo 1
pour vrai, ou simplement aller sans aucun écho. Il n'est pas nécessaire de faire écho à quoi que ce soit car vous vous retrouvez toujours avec un code de sortie que vous vérifiez réellement avec&&
et||
> <> ,
10189838194 octetsModifier:
basculé vers la vérification des caractères non alphanumériques plutôt que des caractères alphanumériques.Je suis revenu car j'ai oublié de vérifier entre Z et a. Merci @Emigna. Rip ces octets perdus siEdit 2: En outre, je peux tout simplement me débarrasser de ces}}}}. Merci Pélican sarcelle pour cela et trouver le problème avec TIO
Edit 3: remplacé un ~~~ par ap
Je ne sais pas pourquoi cela ne fonctionnera pas sur TIO, mais cela fonctionne bien ici .Le problème était que les commandes {} dans TIO ne fonctionnent pas pour une liste vide.Essayez-le iciComment ça marche
Par souci de cohérence, remplacer le; dans la dernière ligne avec une instruction invalide fait chaque sortie est une erreur.
la source
C ++,
129105102 octetsMerci à d'autres réponses qui m'ont montré que je peux compter le nombre de caractères
-2 octets grâce à Zacharý
TIO LINK
la source
r
et avoir juste l'expression régulière à l'intérieur de l'appel àstd::regex_match
?Empilé , 21 octets
Essayez-le en ligne!
la source
05AB1E , 21 octets
Essayez-le en ligne!
la source
Java (OpenJDK 8) ,
3736 octetsRéponse assez simple en utilisant une belle expression régulière.
Probablement la réponse Java la plus courte que j'aie jamais faite.
-1 octets grâce à Neil sur la réponse Javascript
Essayez-le en ligne!
la source
Rétine , 18 octets
Essayez-le en ligne!
ou
Essayez-le en ligne!
la source
Haskell , 75 octets
-2 octets grâce à user28667.
Essayez-le en ligne!
la source
drop(length s-4)
et extrayezlength s
Deorst , 22 octets
Essayez-le en ligne!
Utilise simplement l'expression régulière trouvée par Shaggy
la source
V , 17 octets
Essayez-le en ligne!
Hexdump:
Des regex compressés pour la victoire!
la source
Ruby -n, 22+1 = 23 bytes
Output
0
if true,nil
if falseTry it online!
Using the same boring regex as everybody else.
la source
Swift 4, 113 bytes
Try it online!
la source
AWK, 23 bytes
Try it online!
Outputs the account name if valid, and outputs nothing if it isn't valid
la source
Clean, 61 bytes
Try it online!
la source
Perl 5,
3529+1(-a) = 30 bytes-6 bytes thanks to ETHproductions
Added 4 bytes. Didn't see that underscore wasn't allowed.
This is my first golf, so here's hoping I did it right.
Returns 1 if valid, 0 if not.
Try it online!
la source
print/^\w{1,76}VEVO$/?1:0
+0
converts match bool into number, rather than?1:0
, saves 2 bytes. Calling with-ple
prints$_
for you. So:perl -ple '$_=/^[^\W_]{0,76}VEVO$/+0'
. 25 bytes. If you are happy to get blanks on non-matching lines,$_=/^[^\W_]{0,76}VEVO$/
is 23 bytes.Google Sheets, 33 Bytes
Anonymous worksheet function that takes input from range
A1
and outputs to the calling cellla source
=RegexMatch(A1,"^[^\W_]{0,76}VEVO")
without any feedback to the user and executesClojure, 146 bytes
Try it online!
This would be much shorter using a regex, but I figured doing it manually would be more interesting.
la source
ends-with?
function, even though that's part of the standard library.