Pengarahan
Diberi nama Kelas / Paket Java yang Sepenuhnya Memenuhi Syarat, Anda harus menyingkatnya seperti:
Setiap bagian dari paket yang dipisahkan titik akan disingkat menjadi huruf pertama, terlepas dari bagian terakhir dan kelas (jika ada).
nama paket semua huruf kecil, dan kelas (jika ada) akan mulai dengan huruf kapital dan menjadi UpperCamelCase. paket datang dalam bentuk:
foo.bar.foo
dan
foo.bar.foo.Class
Contohnya
(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
Aturan
- Kode terpendek dalam byte menang
- Celah standar berlaku
fantastic.foo.func.bar
menjadif.f.f.bar
atau apakah dijamin bahwa 2 paket tidak dapat dimulai dengan huruf yang sama?f.f.f.bar
akan benar.Jawaban:
Retina , 17 byte
Cobalah online!
Penjelasan
Ini diganti dengan
$1
, yang merupakan periode dan huruf kecil yang tidak boleh dihapus.sumber
JavaScript (ES6),
6853 byteLihat solusi saya yang lain di sini .
Cobalah
sumber
s=>s.split`.`.map((x,y,z)=>z[y+1]>"["?x[0]:x).join`.`
?Mathematica, 75 byte
Fungsi anonim. Mengambil string sebagai input dan mengembalikan string sebagai output.
sumber
Japt ,
30 2725 byteCobalah online!
sumber
('[>ZgJ)
Python 2 ,
7673 byteCobalah online! atau Coba semua test case
sumber
Python 2 ,
8881 byteCobalah online!
sumber
Java 7, 66 byte
Port dari jawaban Retina luar biasa @MartinEnder .
Coba di sini.
sumber
JavaScript (ES6), 36 byte
Port lain dari jawaban Retina Martin . Lihat solusi saya yang lain di sini .
sumber
V , 9 byte
Cobalah online!
Hexdump:
Ini adalah contoh yang indah dari tanda tangan V kompresi regex .
Penjelasan:
sumber
Python 2 ,
1089789 byteCobalah online!
-8 dengan banyak terima kasih kepada @ovs untuk tipnya
sumber
for x in range(len(i)+~(i[-1][0]<"[")):i[x]=i[x][0]
untuk -8sed ,
5722 byteSaya berharap solusi sed menjadi sedikit lebih pendek dari ini ...Edit:
Solusi yang lebih pendek menggunakan regex dari jawaban Martin Ender .
Kode sumber 21 byte + 1 byte untuk
-r
flag (atau-E
flag untuk BSD sed).sumber
s|\B\w+(\.[a-z])|\1|g
?Haskell , 58 byte
Cobalah online! Penggunaan:
f "some.string"
.lex
mem-parsing string sebagai token Haskell, jadilex "some.string"
kembali[("some",".string")]
.f
berulang atas token dalam string dan selalu menambahkan char pertamaa
dari token saat ini, tetapi sisat
token hanya jika string yang tersisa setelah titik duap
dimulai dengan char huruf besar, yaitux<'a'
. Jika kecocokan pola gagal, kami telah mencapai token terakhir dan cukup kembalis
.sumber