iBug baru-baru ini mendapatkan batang panjang yang terbuat dari bahan komposit namun bernilai. Bilah itu sangat panjang sehingga iBug tidak bisa dengan mudah menjualnya untuk kredit, jadi dia ingin memotongnya. Bilah terbuat dari bahan yang rapuh dan ajaib sehingga, jika bagiannya pecah, semua bagian batang yang terbuat dari bahan yang sama akan pecah juga, sehingga sulit untuk memotong dengan sewenang-wenang.
iBug ingin memotong bilah menjadi potongan-potongan sebanyak mungkin. Dia juga menyukai program yang sangat singkat dan golf code, jadi dia membuat analisis abstrak dari masalahnya.
Bilah ajaib iBug direpresentasikan sebagai string (atau array atau urutan karakter jika Anda suka), seperti ini:
aaabbccccccbbbaaacccccaabbbaaaaa
Setiap huruf dalam string mewakili satu bahan ajaib. Bilah selalu cocok dengan RegEx ^\w*$
, jadi mungkin ada hingga 63 materi di bilah. "Bagian" adalah urutan karakter yang berurutan yang tidak dipisahkan oleh spasi.
iBug ingin Anda menulis sebuah program yang menghitung bagian maksimum yang bisa ia dapatkan, jika nol atau lebih set karakter sepenuhnya dihapus (diganti dengan spasi), dan beri tahu iBug nomor itu.
Contoh 1:
In: aaabbccccccbbbaaacccccaabbbaaaaa
Out: 4
Deskripsi: Jika b
dihapus sepenuhnya dari bilah, iBug dapat memperoleh 4 bagian. Dia juga bisa mendapatkan 4 bagian dengan melepas b
dan c
, seperti yang ditunjukkan di bawah ini
aaabbccccccbbbaaacccccaabbbaaaaa # Original string
aaa cccccc aaacccccaa aaaaa # Remove 'b'
aaa aaa aa aaaaa # Remove 'b' and 'c'
Dan itulah jumlah maksimum bagian yang bisa didapatkan iBug dari bilah ini
Contoh 2:
In: 111aa___9999____aaa99111__11_a_aa999
Result: 111aa 9999 aaa99111 11 a aa999
Out: 6
Deskripsi: Dengan hanya menghapus garis bawah, iBug bisa mendapatkan 6 bagian dari bilah dan itu maksimum.
Contoh 3:
In: __________
Out: 1
Deskripsi: Apa? Kamu ingin memotong ini? Ini hanya mungkin untuk mendapatkan 1 bagian jika Anda tidak memotongnya sama sekali.
Contoh 4:
In:
Out: 0
Deskripsi: Tidak ada yang dipotong, jadi nol.
Ada juga beberapa aturan yang iBug ingin program patuhi:
iBug tidak suka celah standar dan mereka dilarang.
Selama ini bekerja, tidak perlu program yang lengkap. Fungsi yang mengambil input dari parameter dan memberikan output melalui nilai balik juga diterima.
Input dan output yang fleksibel diperbolehkan. Program atau fungsi Anda dapat mengambil string, atau array karakter, atau apa pun yang Anda anggap paling mudah untuk ditangani. Anda dapat memberikan output dengan mencetak nomor atau mengembalikannya.
Sampel uji kasus (tetapi tidak terbatas pada ini)
aaabbbaaa = 2
123456789 = 5
AaAaAaAa = 4
aaabcccdedaaabefda = 6
________ = 1
(empty) = 0
Karena ini adalah kode-golf , program terpendek (dalam byte) di setiap bahasa menang!
Tambahan
iBug sangat menghargai jika Anda dapat memberikan penjelasan untuk program Anda, meskipun itu tidak mempengaruhi skor Anda (masih panjang dalam byte).
2468
, untuk yang kedua, hapus bd
.
2,4,6,8
dari yang pertama dan b,d,f
dari yang kedua.
123456789
hasil 5? Dan bagaimana caraaaabcccdedaaabefda
menghasilkan 6? Saya mendapatkan 2 dan 4 masing-masing untuk dua kasus uji ini.