iBug kısa süre önce kompozit, ancak değerli malzemelerden yapılmış uzun bir çubuk aldı. Bar o kadar uzundur ki, iBug krediler için kolayca satamaz, bu yüzden kesmek istiyor. Çubuk, bir parça kırılırsa, aynı malzemeden yapılmış çubuğun tüm parçaları da kırılacak ve keyfi bir şekilde kesilmesini zorlaştıracak kadar kırılgan ve sihirli malzemelerden yapılır.
iBug, çubuğu mümkün olduğu kadar çok parçaya ayırmak istiyor. Ayrıca çok kısa programları ve kod-golf oynamayı seviyor, bu yüzden probleminin soyut bir analizini yaptı.
iBug'un sihirli çubuğu bir dizge (ya da eğer istersen bir dizi ya da karakter dizisi) olarak temsil edilir, şöyle:
aaabbccccccbbbaaacccccaabbbaaaaa
İpteki her harf bir sihirli maddeyi temsil eder. Çubuk her zaman RegEx ile eşleşir ^\w*$
, bu nedenle çubukta en fazla 63 malzeme olabilir. Bir "kısım", boşluklarla ayrılmamış herhangi bir karakterin arka arkaya dizisidir.
iBug, sıfır veya daha fazla karakter kümesi tamamen kaldırılırsa (boşluklarla değiştirilirse) alabileceği maksimum parçaları hesaplayan bir program yazmanızı ve bu numarayı iBug'a bildirmenizi ister.
Örnek 1:
In: aaabbccccccbbbaaacccccaabbbaaaaa
Out: 4
Açıklama: b
Çubuktan tamamen çıkarılmışsa, iBug 4 parça alabilir. O da kaldırarak 4 parçalar alabilirsiniz b
ve c
aşağıda gösterildiği gibi,
aaabbccccccbbbaaacccccaabbbaaaaa # Original string
aaa cccccc aaacccccaa aaaaa # Remove 'b'
aaa aaa aa aaaaa # Remove 'b' and 'c'
İBug'un bu çubuktan alabileceği maksimum parça sayısı budur
Örnek 2:
In: 111aa___9999____aaa99111__11_a_aa999
Result: 111aa 9999 aaa99111 11 a aa999
Out: 6
Açıklama: Yalnızca alt çizgiyi kaldırarak, iBug çubuktan 6 parça alabilir ve bu maksimumdur.
Örnek 3:
In: __________
Out: 1
Açıklama: Ne? Bunu kesmek ister misin? Eğer hiç kesmezseniz sadece 1 kısım almak mümkündür.
Örnek 4:
In:
Out: 0
Açıklama: Kesilecek bir şey yok, bu yüzden sıfır.
İBug'un programların uymasını istediği bazı kurallar da var:
iBug standart boşlukları beğenmez ve yasaktır.
Çalıştığı sürece, tam bir program olması gerekmez. Parametreden girdi alan ve geri dönüş değeri ile çıktı veren bir işlev de kabul edilir.
Esnek giriş ve çıkış izin verilir. Programınız veya işleviniz bir karakter dizisi veya bir karakter dizisi veya başa çıkılması en kolay olan şeyi alabilir. Çıktıyı sayıyı yazdırarak veya geri vererek verebilirsiniz.
Örnek test durumları (ancak bunlarla sınırlı değildir)
aaabbbaaa = 2
123456789 = 5
AaAaAaAa = 4
aaabcccdedaaabefda = 6
________ = 1
(empty) = 0
Bu bir kod golf olduğu için, her dilde en kısa program (bayt cinsinden) kazanır!
Ekstra
Puanınızı etkilemese de iBug, programınız için bir açıklamada bulunabildiğiniz için teşekkür eder (hala bayt cinsinden).
2468
, ikincisi için çıkarın bd
.
2,4,6,8
, ilk ve b,d,f
ikinci olanları kaldırırsınız .
123456789
Verim 5 nasıl ? Ve nasılaaabcccdedaaabefda
6 verir? Bu iki test için sırasıyla 2 ve 4 puan alıyorum.