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
VEVO
yūņīčōdēVEVO
test123VeVo
y 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
1
válidas o0
invá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\w
clase RegEx no incluye guión bajo.fuente
;¥oB+mc)¯80 ©"VEVO"¥Ut4n
B+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
\w
coincide con_
s también?((?!_)\w)
ahorra 2 bytes.[^\W_]
Funcionaría para un ahorro de 3 bytes ?/^[^\W_]{0,76}VEVO$/.test
o 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
return
declaració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
⍣¯1
para verificarVEVO
y 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í.
e
Haga coincidir la entrada ntire con el patrón: como máximo 76n
caracteres alfanuméricos, seguidos de la cadenaVEVO
. Imprime1
por partido y0
sin 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 1
por 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
r
y 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 s
Deorst , 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
0
si es verdad,nil
si 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
+0
convierte match bool en número, en lugar de?1:0
guardar 2 bytes. Llamando con-ple
huellas$_
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
A1
y 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.