Introducción
Nosotros, especialmente los geeks entre nosotros, que tienden a ser fanáticos, todos recordamos esta vieja caricatura de Far Side :
Claramente, el profesor Schwartzman podría haber repasado sus habilidades de programación un poquito más antes de poner en práctica su invento. Pero, ¿puedes replicarlo tú mismo ... usando la menor cantidad de bytes posible?
Especificaciones de entrada
Debe crear una secuencia de comandos que traduzca los sonidos de los perros en "Hey" adecuadamente entonados. Esto es puro golf de código; gana el menor número de bytes.
Su entrada consistirá en alguna combinación de los siguientes tokens:
Bark,Baark,Baaark,Baaaark, ... (es decir,B*rkcon al menos 1areemplazando el asterisco)Woof,Wooof,Woooof, ... (W*fcon al menos 2os reemplazando el asterisco)Grr`Grrr`Grrrr, ..., (Gseguido de al menos 2rs)- Cualquier número de caracteres
.(punto),!(signo de exclamación) y / o?(signo de interrogación), que pueden aparecer en cualquier parte de la entrada
Tenga en cuenta, nuevamente, que los tokens Woofbasados y Grrbasados siempre requieren al menos dos o sy rs respectivamente; Wofy noGr son tokens válidos.
No hay límite en cuanto a la duración de un token (por ejemplo, cuántos as repetidos puede haber en un Barktoken); Sin embargo, su decodificador sólo tiene que funcionar correctamente para tokens de entrada con un máximo de 10 en total as, oS, o rS para pasar este desafío.
Especificaciones de salida
Fiel al diseño de Schwartzman, su programa decodificador canino debe procesarlo en texto de salida de la siguiente manera:
Bark,WoofYGrrconvertidoHey;Baark,WooofYGrrrconvertidoHeyy;Baaark,WoooofYGrrrrconvertidoHeyyy; etc.- Para todos los
Barktokens basados, el número deys en elHeytoken basado en la salida debe ser igual al número deas; - Para todos los
Wooftokens basados en, el número deys en elHeytoken basado en la salida debe ser uno menos que el número deos; - Para todos los
Grrtokens basados en, el número deys en elHeytoken basado en la salida debe ser uno menos que el número ders; - Todo puntuacion (
.,!y?) se deja sin cambios.
¡Recuerde soltar uno yde la salida solo para Woofsy Grrs! La entrada Baaaaaaaark?, con 8 as, se convertirá Heyyyyyyyy?, con un conjunto coincidente de 8 ys. Sin embargo, se Woooooooof?vuelve único Heyyyyyyy?, con 7 ys.
Nuevamente, si puede hacer que su programa funcione para tokens de entrada de tamaño ilimitado, eso es genial, pero para los propósitos de este desafío, su programa solo se verificará para asegurarse de que funcione correctamente para tokens de entrada que no tengan más de 10 letras repetidas .
Todo Bark-, Woof-, y Grrlos tokens basados en su entrada se supone que comenzar con letras mayúsculas. Por lo tanto, no hay ninguna necesidad de inflexión mango Bark grrren Hey heyyo algo similar.
Ejemplo de entradas y salidas
- Entrada:
Bark. Bark! Bark!! - Salida:
Hey. Hey! Hey!!
- Entrada:
- Entrada:
Baaaaaark?(seisas) - Salida:
Heyyyyyy?(seisys)
- Entrada:
- Entrada:
Grrrrrrrr...(ochors) - Salida:
Heyyyyyyy...( sieteys)
- Entrada:
- Entrada:
?...! - Salida:
?...!
- Entrada:
- Entrada:
Wooof Woof? Grrrr. Baaaark Grr! - Salida:
Heyy Hey? Heyyy. Heyyyy Hey!
- Entrada:


Respuestas:
Retina ,
24181716 bytes1 byte guardado en base a una idea en la respuesta de MT0.
Pruébalo en línea!
Explicación
Esto simplemente convierte todas las letras en
y, pero si van seguidas de unafokla reemplazamos inmediatamente también. Al eliminarfyk"normalizar" la longitud de las palabras para que ahora tengan dosys más de lo que necesitan.Esto convierte los dos primeros
yde cada palabra enHe, completando la transformación.fuente
Perl,
514139 bytesUso
Entrada
Salida
Cómo funciona
Sustitución simple de expresiones regulares utilizando la impresión automática
-pagregando 1 byte al conteo/geejecuta la sustitución de cada patrón y ejecuta el reemplazo como código.Una versión anterior usaba una detección de tres vías, pero Martin Ender notó que no era lo suficientemente agresivo, lo que me ahorró 10 bytes.
msh210 me informó que no necesita comillas alrededor de la cadena
He, ahorrando dos bytes.fuente
He.Python, 106 bytes
Manifestación
https://repl.it/C6Rr
fuente
JavaScript (ES6) -
57555251 BytesPrueba:
Gracias a @MartinEnder por los bytes 56 y 51 y la inspiración para algunas de las otras virutas.
fuente
Vimscript,
51393733322928 bytes,Regex créditos por afeitar 9 bytes más: MT0, Martin Ender, msh210
Explicación:
fuente
\<yylugar de\<\hy?Perl 5, 25 bytes
Una copia de Perl de la respuesta Retina de Martin Ender . 24 bytes, más 1 para en
-pelugar de-e.fuente
Javascript,
726664 BytesEditar: separado
f=y función + recuento de bytes reducidofuente
f=(como valor predeterminado de PPCG), por lo que funciona 64 bytes.Pyke, 35 bytes
Pruébalo aquí!
Genera oye, genera puntuación, se junta, se une
fuente
Python 3,
140135134 bytesUsar expresiones regulares para encontrar ocurrencias de caracteres reemplazables.
Editar: Golfed 1 byte de espacios en blanco y 4 bytes al obtener los valores del resultado findall.
Edit2: Golfed 1 byte ("a" de Bark no se contó correctamente)
fuente