Einweisung
Wenn Sie einen vollständig qualifizierten Java-Klassen- / Paketnamen angeben, müssen Sie ihn als solchen kürzen:
Jeder Teil des durch Punkte getrennten Pakets wird auf den ersten Buchstaben gekürzt, abgesehen vom letzten Abschnitt und der Klasse (falls vorhanden).
Paketnamen werden alle in Kleinbuchstaben geschrieben, und die Klasse (falls vorhanden) beginnt mit einem Großbuchstaben und lautet UpperCamelCase. Pakete kommen in Form von:
foo.bar.foo
und
foo.bar.foo.Class
Beispiele
(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
Regeln
- Der kürzeste Code in Bytes gewinnt
- Es gelten Standardlücken
fantastic.foo.func.bar
wordenf.f.f.bar
oder ist sichergestellt , dass zwei Pakete nicht mit dem gleichen Buchstaben beginnen?f.f.f.bar
wäre richtig.Antworten:
Netzhaut , 17 Bytes
Probieren Sie es online aus!
Erläuterung
Dies wird durch
$1
den Punkt und den Kleinbuchstaben ersetzt , die nicht entfernt werden sollten.quelle
JavaScript (ES6),
6853 ByteSehen Sie meine andere Lösung hier .
Versuch es
quelle
s=>s.split`.`.map((x,y,z)=>z[y+1]>"["?x[0]:x).join`.`
?Mathematica, 75 Bytes
Anonyme Funktion. Nimmt eine Zeichenfolge als Eingabe und gibt eine Zeichenfolge als Ausgabe zurück.
quelle
Japt ,
30 2725 BytesProbieren Sie es online aus!
quelle
('[>ZgJ)
Python 2 ,
7673 BytesProbieren Sie es online aus! oder Probieren Sie alle Testfälle aus
quelle
Python 2 ,
8881 BytesProbieren Sie es online aus!
quelle
Java 7, 66 Bytes
Port von @MartinEnders erstaunlicher Retina-Antwort .
Probieren Sie es hier aus.
quelle
JavaScript (ES6), 36 Byte
Ein weiterer Hafen von Martins Retina-Antwort . Sehen Sie meine andere Lösung hier .
quelle
V , 9 Bytes
Probieren Sie es online aus!
Hexdump:
Dies ist ein wunderbares Beispiel für V Unterschrift regex Kompression .
Erläuterung:
quelle
Python 2 ,
1089789 BytesProbieren Sie es online aus!
-8 mit vielen Dank an @ovs für den Tipp
quelle
for x in range(len(i)+~(i[-1][0]<"[")):i[x]=i[x][0]
für -8sed ,
5722 BytesIch habe erwartet, dass die sed-Lösung etwas kürzer ist ...Bearbeiten:
Die kürzere Lösung verwendet Regex aus Martin Enders Antwort .
21 Bytes Quellcode + 1 Byte für
-r
Flag (oder-E
Flag für BSD sed).quelle
s|\B\w+(\.[a-z])|\1|g
?Haskell , 58 Bytes
Probieren Sie es online aus! Verwendung :
f "some.string"
.lex
analysiert eine Zeichenfolge als Haskell-Token undlex "some.string"
kehrt daher zurück[("some",".string")]
.f
rekursiv über die Token in der Zeichenfolge und hängt immer das erstea
Zeichen des aktuellen Tokens an, den Restt
des Tokens jedoch nur, wenn die verbleibende Zeichenfolge nach dem Doppelpunktp
mit einem Großbuchstaben beginntx<'a'
. Wenn die Musterübereinstimmung fehlgeschlagen ist, haben wir das letzte Token erreicht und kehren einfach zurücks
.quelle