(Significado: convertir inglés a bleet)
Hemos alabado a las cabras como dios desde hace años.
Pero si no podemos traducir el inglés al 'Bleet', el idioma de Dios de la cabra, no podemos comunicarnos con ellos.
Entonces, para comunicarnos con ellos, hemos investigado las actividades de las cabras y recuperamos este patrón, que es el núcleo del lenguaje.
Di 'Bleet' por la longitud de cada palabra. Eso significa que la cantidad de 'e' debe ser (longitud-3) para palabras más largas que 3 letras. Deberá reducir 'Bleet' para palabras más cortas que 'Blt'. Por ejemplo, 'be' se convierte en 'bl', pero 'cat' y 'boat' se convierten en 'blt' y 'blet'.
Como parece, en realidad no cambian los caracteres que no son del alfabeto a 'Bleet'. Nuestra investigación mostró que '¡Hola, mundo!' Bleet es '¡Bleet, Bleet!' no 'Bleeet Bleeet'. Además, las cabras no son tan inteligentes (sin ofender), por lo que no parecen entender a los personajes no ascii o diacríticos.
Ahora, es hora de hacer un traductor para comunicarse con los dioses de las cabras.
Bleeeeet (Significado: Ejemplos)
Hello, World! => Bleet, Bleet!
lorem ipsum dolor sit amet. => Bleet Bleet Bleet Blt Blet.
We praise the Goat God! => Bl Bleeet Blt Blet Blt!
I have a pen => B Blet B Blt
0123456789_ => 0123456789_
0te_st1 => 0Bl_Bl1

it'sconvertirá enBltoBl'toBl'B?Jimmy's:Bleee't), los trato como separaciones de palabras (Jimmy's:Bleet'B), o los trato como parte de las palabras (Jimmy's:Bleeeet). Si tuviera que elegir uno, iría con la opción de separador de palabras, ya que es lo que hacen las 6 respuestas.Respuestas:
Retina , 31 bytes
Pruébalo en línea!
Explicación
Convierte todas las letras en
es.Convierte el primero
een cada carreraB.Conviértete
BeenBl.Convierte el último
een cada carrerat.fuente
T1LlaTetapa de "envuelve" los pares de traducción para que pueda convertir todas las letras de esa manera ael, no una1, pero no estoy seguro de lo que quieres decir con "envoltura". La transliteración simplemente repite el último carácter en el patrón de destino, por lo que si lo fueraT`lL`ef, se asignaríaaaey todas las demás letras af, no alternativamente aeyf.JavaScript (ES6),
797774 bytesEnfoque alternativo, actualmente
8378 bytes:Lo mejor que pude hacer recursivamente fue 88 bytes:
fuente
'Blet'[i>1?2+!x[i+1]:i]pero, lamentablemente, tiene la misma longitud.PHP,
11588867775 bytespreg_replacecon matrices (requiere PHP 5.4 o posterior)Ejecutar
echo '<string>' | php -nR '<code>'o probarlo en línea .Descompostura
Revisión 5: guardado 9 bytes con la cadena de expresiones regulares de Martin Ender .
(Eso también solucionó casos con caracteres de palabras no alfabéticos = dígitos / guiones bajos).
fuente
Haskell ,
135128bytesPruébalo en línea! Uso
(""!) $ "some string". Sin expresiones regulares, esto resultó ser bastante largo, tal vez algún otro enfoque es más corto. Editar: ¡Guardado 7 bytes gracias a @nimi!fuente
bquease puede aplicar de inmediato cuando se construye la cadena resultante y omitir la final=<<:b!(l:t)|...|1<3=a b++l:""!t;b!_=a b;(""!).Perl 5 , 47 bytes
Ahorró 15 bytes usando la misma técnica que la respuesta Retina de Martin Ender . (Esta respuesta es básicamente un puerto de su respuesta ahora)
46 bytes de código +
-pbandera.Pruébalo en línea!
Versiones anteriores: 62 bytes:
Y 68 bytes:
fuente
PHP, 84 bytes
PHP, 117 bytes
fuente
-1+$l=...\blfalla por caracteres de palabra no alfabéticos:_we_. Es necesario una afirmación explícita:(?<!l)l. Lo mismo parae\b->e(?!e)(+7 bytes)C,
1201511401111081051049290 BytesTrabajando para "Es la prueba de Jimmy" -> Bl'B Bleet'B Blet
La salida ahora es un efecto secundario al destruir la cadena original.
Creo que es correcto al menos ahora
fuente
Python 2.7,
129118114109959188 bytesSolo un
re.subcadenaPaso a paso
Entrada de ejemplo: " Alabamos al Dios de la cabra! "
Sub alias para que podamos guardar bytes en llamadas repetidas
Reemplace todos los caracteres de palabras con "e"
s("\w","e",i)Salida:
ee eeeeee eee eeee eee!Reemplace todas las "e" que están precedidas por un límite de palabra (Comienzo de palabra) con "B"
s(r"\be","B",s("\w","e",i))Salida:
Be Beeeee Bee Beee Bee!Reemplace todo "Be" con "Bl"
s("Be","Bl",s(r"\be","B",s("\w","e",i)))Salida:
Bl Bleeee Ble Blee Ble!Reemplace todas las "e" s seguidas de un límite de palabra con "t"
s(r"e\b","t",s("Be","Bl",s(r"\be","B",s("\w","e",i))))Salida:
Bl Bleeet Blt Blet Blt!fuente
returnconprintdebería guardar un byte.rde las cadenas sin formato si no tienen barras invertidas en ellas, ahorrando otros 3 bytesr) y lo reduje a 95 bytes. ¡Gracias por la sugerencia!Pip , 28 bytes
Toma entrada como argumento de línea de comando. Pruébalo en línea!
Explicación
Esto fue divertido: pude usar modificadores de expresiones regulares e interpolación de cadenas.
fuente
Python 3, 271 bytes
Soy consciente de que esto es bastante largo y agradezco las sugerencias sobre cómo reducir la longitud.
fuente
x.append(y)o en su caso,a(x,y)puede hacerlox+=y,(se requiere coma)apilado , 57 bytes
Pruébalo en línea! Toma información desde la parte superior de la pila.
Deje a ( n ) = A136412 ( n - 2) = (5 × 4 n - 2 + 1) ÷ 3. La conversión de a ( n ) en la base 4 produce:
Al asignar índices 0..3 a la cadena
Blet, obtenemos:Ahora, anteponer
Bnos da la cadena deseada, dada la longitud. Principalmente. Uno solo necesita manejar los casos especiales para n ≤ 2. En mi caso, esto se resuelve restando ( n - 2 <1) como un booleano numérico (1 para "verdadero" y 0 para "falso").En cuanto a los detalles de la respuesta:
fuente
Python 2 ,
137114bytesPruébalo en línea!
fuente
Java 7, 201 bytes
No estoy muy contento con él, y ciertamente se puede jugar un poco más.
Explicación:
Código de prueba:
Pruébalo aquí
Salida:
fuente
s.split("")en lugar des.toCharArray()x=c&~32no funcionará en una Cadena, yx>64&x<91ambas ya no funcionarán). Sin embargo, si puedes acortarlo con la división, házmelo saber.05AB1E , 36 bytes
Pruébalo en línea! o como un conjunto de pruebas
Explicación
Preparar entrada:
Esto crea una lista como
['hello', ', ', 'world', '!']para la entradaHello, World!Iterar sobre la lista:
fuente