Instrucciones
Dado un nombre de clase / paquete Java totalmente calificado, debe acortarlo como tal:
Cada parte del paquete separado por puntos se acortará a su primera letra, aparte de la última sección y la clase (si existe).
los nombres de los paquetes estarán en minúsculas, y la clase (si existe) comenzará con una letra mayúscula y será UpperCamelCase. los paquetes vienen en forma de:
foo.bar.foo
y
foo.bar.foo.Class
Ejemplos
(No Class)
Input com.stackoverflow.main
Output c.s.main
(Class)
Input com.google.parser.Gson
Output c.g.parser.Gson
(Class)
Input com.google.longer.package.TestClass
Output c.g.l.package.TestClass
Reglas
- El código más corto en bytes gana
- Se aplican lagunas estándar

fantastic.foo.func.barconvertidof.f.f.baro está garantizado que 2 paquetes no pueden comenzar con la misma letra?f.f.f.barSería correcto.Respuestas:
Retina , 17 bytes
Pruébalo en línea!
Explicación
Esto se reemplaza con
$1, que es el punto y la letra minúscula que no se debe eliminar.fuente
JavaScript (ES6),
6853 bytesVea mi otra solución aquí .
Intentalo
fuente
s=>s.split`.`.map((x,y,z)=>z[y+1]>"["?x[0]:x).join`.`?Mathematica, 75 bytes
Función anónima. Toma una cadena como entrada y devuelve una cadena como salida.
fuente
Japt ,
30 2725 bytesPruébalo en línea!
fuente
('[>ZgJ)Python 2 ,
7673 bytesPruébalo en línea! o Pruebe todos los casos de prueba
fuente
Python 2 ,
8881 bytesPruébalo en línea!
fuente
Java 7, 66 bytes
Puerto de la sorprendente respuesta de Retina de @MartinEnder .
Pruébalo aquí.
fuente
JavaScript (ES6), 36 bytes
Otro puerto de la Retina de Martin responde . Vea mi otra solución aquí .
fuente
V , 9 bytes
Pruébalo en línea!
Hexdump:
Este es un maravilloso ejemplo de la firma del V compresión de expresiones regulares .
Explicación:
fuente
Python 2 ,
1089789 bytesPruébalo en línea!
-8 con muchas gracias a @ovs por el dato
fuente
for x in range(len(i)+~(i[-1][0]<"[")):i[x]=i[x][0]para -8sed ,
5722 bytesEsperaba que la solución sed fuera un poco más corta que esto ...Editar:
La solución más corta utiliza expresiones regulares de la respuesta de Martin Ender .
Código fuente de 21 bytes + 1 byte para
-rbandera (o-Ebandera para BSD sed).fuente
s|\B\w+(\.[a-z])|\1|g?Haskell , 58 bytes
Pruébalo en línea! Uso:
f "some.string".lexanaliza una cadena como tokens Haskell, por lo quelex "some.string"regresa[("some",".string")].fvuelve a aparecer sobre los tokens en la cadena y siempre agrega el primer carácteradel token actual, pero el restotdel token solo si la cadena restante después de los dos puntospcomienza con un carácter en mayúscula, es decirx<'a'. Si la coincidencia de patrón falló, hemos alcanzado el último token y simplemente regresamoss.fuente