A menudo vemos videos musicales en Youtube. Muchos canales de Youtube que alojan videos musicales están "impulsados por VEVO". Esos pueden identificarse fácilmente incrustando VEVO en sus miniaturas de video y agregando VEVO al nombre de su canal.
Ahora escriba algún código para probar si una cadena dada por el usuario es una cuenta de usuario VEVO o no.
Requisitos para cadenas de cuenta de usuario VEVO válidas:
Solo debe contener mayúsculas, minúsculas y caracteres de dígitos. (sin espacios en blanco o puntuación)
No debe exceder los 80 caracteres de longitud.
Debe tener una subcadena "VEVO" al final de la cadena
Casos de prueba:
Entradas válidas:
AdeleVEVO
ConnieTalbotVEVO
SHMVEVO
justimberlakeVEVO
DJMartinJensenVEVO
test123VEVO
Entradas inválidas:
syam kapuk
jypentertainment
Noche de Brujas
testVEVO123
Por supuesto, debido a que esto es código golf , estoy buscando el código más corto usando cualquier lenguaje de programación.
fuente

VEVOyūņīčōdēVEVOtest123VeVoy uno con más de 80 caracteresạyẠdígitos en otros alfabetos, por ejemplo九(9).Respuestas:
Python 2 , 45 bytes
-3 bytes gracias a Rod. -2 bytes gracias a los ovs.
Pruébalo en línea!
Una solución regex resulta ser más larga.
fuente
Japt v2.0a0,
2016 bytesDevoluciones
1válidas o0inválidas.[\l\d]también funcionaría en lugar de[^\W_]para el mismo recuento de bytes.Intentalo | Verifique todos los casos de prueba
Explicación :
ècuenta el número de coincidencias del RegEx en la entrada. En Japt, la\wclase RegEx no incluye guión bajo.fuente
;¥oB+mc)¯80 ©"VEVO"¥Ut4nB+mc:) Por cierto, si Japt2 tuviera una clase de personaje[A-Za-z0-9], ¡podríamos vencer a Retina aquí! Incluso podría valer la pena anular\w&\W.JavaScript (ES6),
27363431 bytesGuardado 2 bytes gracias a @Neil y 3 bytes gracias a @Shaggy
Casos de prueba
Mostrar fragmento de código
fuente
\wcoincide con_s también?((?!_)\w)ahorra 2 bytes.[^\W_]Funcionaría para un ahorro de 3 bytes ?/^[^\W_]{0,76}VEVO$/.testo algo?PHP , 51 bytes
-10 bytes gracias a @Ismael Miguel por usar en
<?=lugar de<?php echo! y quitando la etiqueta de cierrePruébalo en línea!
¡Gracias por las otras respuestas, así que no tuve que escribir la expresión regular!
fuente
<?php echo, puedes hacerlo<?=preg_match("/^[^\W_]{0,76}VEVO$/",fgets(STDIN));.[^\W_], simplemente use\w, que es lo mismo que[a-zA-Z_].APL (Dyalog) , 25 bytes
Pruébalo en línea!
fuente
C (gcc) , 83 bytes
Pruébalo en línea!
fuente
returndeclaración, ¿cómo vuelve estoc? Comportamiento indefinido?Dyalog APL , 47 bytes
Pruébalo en línea!
Una solución regex pura tiene 32 bytes , pero también es mucho más aburrida que este enfoque.
fuente
⍣¯1para verificarVEVOy necesitar el dfn guard, puedes hacerlo'VEVO'≡¯4↑⍵. Mover las cosas un poco me{('VEVO'≡¯4↑⍵)∧∧/⍵∊⎕D,⎕A,(819⌶)⎕A}↑. Sin embargo, hay otras formas mejores de hacer este desafío (es decir, la respuesta de Eriks) y me gusta esta idea: pGrime , 13 bytes
Pruébalo en línea!
Nada lujoso aquí.
eHaga coincidir la entrada ntire con el patrón: como máximo 76ncaracteres alfanuméricos, seguidos de la cadenaVEVO. Imprime1por partido y0sin partido. Recordé que la última cita podría eliminarse al final de la línea, pero aparentemente solo causa un error de análisis.fuente
C # (.NET Core) , 87 + 18 = 105 bytes
Pruébalo en línea!
fuente
a=>a.All(x=>char.IsLetterOrDigit(x)&x<123)&a.Length<81&a.EndsWith("VEVO")solo letras ASCII o 67 + 18:a=>a.All(x=>char.IsLetterOrDigit(x))&a.Length<81&a.EndsWith("VEVO")con soporte Unicode> <> ,
147125bytesPruébalo en línea!
> <> , 147 bytes
Pruébalo en línea!
Esto imprime 1 si la cadena de entrada es válida y nada para una entrada no válida.
Edición 1: Cambió las comprobaciones alfanuméricas para usar rangos en lugar de comparar con cada personaje. (ahorro de 22 bytes)
fuente
Bash,
532630 bytesCódigo de salida 0 para resultados VÁLIDOS y 1 para resultados NO VÁLIDOS.
Aún trabajando en 80 caracteres o menos.-27 bytes desde la eliminación de la salida, gracias a @KeyWeeUsr
+4 bytes, expresión regular fija (igual que todos los demás)
Pruébalo en línea!
fuente
echo 1por cierto, o simplemente ir sin ningún eco. No hay necesidad de repetir nada, ya que aún termina con un código de salida con el que realmente verifica&&y||> <> ,
10189838194 bytesEditar: se
cambió a la comprobación de caracteres no alfanuméricos en lugar de caracteres alfanuméricos.Cambié de nuevo porque olvidé comprobar entre Z y a. Gracias @Emigna. Aunque rasgue esos bytes perdidosEdición 2: Además, puedo deshacerme de esos}}}}. Gracias a Teal pelican por eso y por encontrar el problema con TIO
Edición 3: reemplazó un ~~~ con ap
No sé por qué esto no funcionará en TIO, pero funciona bien aquí .El problema era que los comandos {} en TIO no funcionan para una lista vacía. Pruébalo aquíCómo funciona
Por consistencia, reemplazando el; en la última línea con una instrucción no válida, cada salida es un error.
fuente
C ++,
129105102 bytesGracias a otras respuestas que me mostraron que puedo contar el número de caracteres
-2 bytes gracias a Zacharý
TIO LINK
fuente
ry solo tener la expresión regular dentro de la llamada astd::regex_match?Apilado , 21 bytes
Pruébalo en línea!
fuente
05AB1E , 21 bytes
Pruébalo en línea!
fuente
Java (OpenJDK 8) ,
3736 bytesRespuesta bastante simple usando una hermosa expresión regular.
Posiblemente la respuesta Java más corta que haya hecho.
-1 bytes gracias a Neil en la respuesta Javascript
Pruébalo en línea!
fuente
Retina , 18 bytes
Pruébalo en línea!
o
Pruébalo en línea!
fuente
Haskell , 75 bytes
-2 bytes gracias al usuario28667.
Pruébalo en línea!
fuente
drop(length s-4)y extraelength sDeorst , 22 bytes
Pruébalo en línea!
Solo usa la expresión regular encontrada por Shaggy
fuente
V , 17 bytes
Pruébalo en línea!
Hexdump:
Regexes comprimidos para la victoria!
fuente
Ruby -n, 22 + 1 = 23 bytes
Salida
0si es verdad,nilsi es falsoPruébalo en línea!
Usando la misma expresión regular aburrida como todos los demás.
fuente
Swift 4 , 113 bytes
Pruébalo en línea!
fuente
AWK , 23 bytes
Pruébalo en línea!
Muestra el nombre de la cuenta si es válido y no muestra nada si no es válido
fuente
Limpio , 61 bytes
Pruébalo en línea!
fuente
Perl 5 ,
3529 + 1 (-a) = 30 bytes-6 bytes gracias a ETHproductions
Se agregaron 4 bytes. No vi que el subrayado no estaba permitido.
Este es mi primer golf, así que espero que lo haya hecho bien.
Devuelve 1 si es válido, 0 si no.
Pruébalo en línea!
fuente
print/^\w{1,76}VEVO$/?1:0+0convierte match bool en número, en lugar de?1:0guardar 2 bytes. Llamando con-plehuellas$_para ti. Por lo tanto:perl -ple '$_=/^[^\W_]{0,76}VEVO$/+0'. 25 bytes. Si está contento de obtener espacios en blanco en líneas que no coinciden,$_=/^[^\W_]{0,76}VEVO$/es de 23 bytes.Hojas de cálculo de Google, 33 bytes
Función de hoja de trabajo anónima que toma entrada del rango
A1y salidas a la celda que llamafuente
=RegexMatch(A1,"^[^\W_]{0,76}VEVO")sin ningún comentario al usuario y ejecutaClojure , 146 bytes
Pruébalo en línea!
Esto sería mucho más corto usando una expresión regular, pero pensé que hacerlo manualmente sería más interesante.
fuente
ends-with?función, aunque sea parte de la biblioteca estándar.