Compte rendu
Étant donné un nom de classe / package Java entièrement qualifié, vous devez le raccourcir en tant que tel:
Chaque partie du paquet séparé par points sera raccourcie à sa première lettre, à l'exception de la dernière section et de la classe (si elle existe).
les noms de packages seront tous en minuscules et la classe (si elle existe) commencera par une majuscule et sera UpperCamelCase. les packages se présentent sous la forme de:
foo.bar.foo
et
foo.bar.foo.Class
Exemples
(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
Règles
- Le code le plus court en octets gagne
- Des échappatoires standard s'appliquent
fantastic.foo.func.bar
devenuf.f.f.bar
ou est - il garanti que 2 paquets ne peuvent pas commencer par la même lettre?f.f.f.bar
serait correct.Réponses:
Rétine , 17 octets
Essayez-le en ligne!
Explication
Il est remplacé par
$1
, qui est la période et la lettre minuscule qui ne doivent pas être supprimées.la source
JavaScript (ES6),
6853 octetsVoir mon autre solution ici .
Essayez-le
la source
s=>s.split`.`.map((x,y,z)=>z[y+1]>"["?x[0]:x).join`.`
?Mathematica, 75 octets
Fonction anonyme. Prend une chaîne en entrée et renvoie une chaîne en sortie.
la source
Japt ,
30 2725 octetsEssayez-le en ligne!
la source
('[>ZgJ)
Python 2 ,
7673 octetsEssayez-le en ligne! ou Essayez tous les cas de test
la source
Python 2 ,
8881 octetsEssayez-le en ligne!
la source
Java 7, 66 octets
Port de l'incroyable réponse Retina de @MartinEnder .
Essayez-le ici.
la source
JavaScript (ES6), 36 octets
Un autre port de la rétine de Martin répond . Voir mon autre solution ici .
la source
V , 9 octets
Essayez-le en ligne!
Hexdump:
Ceci est un exemple merveilleux de la signature de V de compression regex .
Explication:
la source
Python 2 ,
1089789 octetsEssayez-le en ligne!
-8 avec un grand merci à @ovs pour l'astuce
la source
for x in range(len(i)+~(i[-1][0]<"[")):i[x]=i[x][0]
pour -8sed ,
5722 octetsJe m'attendais à ce que la solution sed soit un peu plus courte que cela ...Éditer:
La solution la plus courte utilise l'expression régulière de la réponse de Martin Ender .
21 octets code source + 1 octet pour
-r
indicateur (ou-E
indicateur pour BSD sed).la source
s|\B\w+(\.[a-z])|\1|g
?Haskell , 58 octets
Essayez-le en ligne! Utilisation:
f "some.string"
.lex
analyse une chaîne en tant que jetons Haskell, donclex "some.string"
retourne[("some",".string")]
.f
revient sur les jetons de la chaîne et ajoute toujours le premier caractèrea
du jeton actuel, mais le restet
du jeton uniquement si la chaîne restante après les deux-pointsp
commence par un caractère majuscule, c'est-à-direx<'a'
. Si la correspondance de modèle a échoué, nous avons atteint le dernier jeton et revenons simplements
.la source