(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's
convertirá enBlt
oBl't
oBl'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
e
s.Convierte el primero
e
en cada carreraB
.Conviértete
Be
enBl
.Convierte el último
e
en cada carrerat
.fuente
T1L
laT
etapa de "envuelve" los pares de traducción para que pueda convertir todas las letras de esa manera ae
l
, 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íaa
ae
y todas las demás letras af
, no alternativamente ae
yf
.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_replace
con 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
b
quea
se 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 +
-p
bandera.Pruébalo en línea!
Versiones anteriores: 62 bytes:
Y 68 bytes:
fuente
PHP, 84 bytes
PHP, 117 bytes
fuente
-1+$l=...
\bl
falla 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.sub
cadenaPaso 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
return
conprint
debería guardar un byte.r
de 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
B
nos 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&~32
no funcionará en una Cadena, yx>64&x<91
ambas 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