iBug recientemente recibió una barra larga hecha de materiales compuestos pero valiosos. La barra es tan larga que iBug no puede venderla fácilmente por créditos, por lo que quiere cortarla. La barra está hecha de materiales tan frágiles y mágicos que, si una parte se rompe, todas las partes de la barra hechas del mismo material también se romperán, lo que dificultará el corte arbitrario.
iBug quiere cortar la barra en tantas piezas como sea posible. También le encantan los programas muy cortos y el golf de código, por lo que hizo un análisis abstracto de su problema.
La barra mágica de iBug se representa como una cadena (o una matriz o una secuencia de caracteres si lo prefiere), así:
aaabbccccccbbbaaacccccaabbbaaaaa
Cada letra en la cadena representa un material mágico. La barra siempre coincide con el RegEx ^\w*$
, por lo que puede haber hasta 63 materiales en la barra. Una "parte" es una secuencia consecutiva de cualquier carácter que no esté separado por espacios.
iBug quiere que escribas un programa que calcule las partes máximas que podría obtener, si cero o más juegos de caracteres se eliminan por completo (reemplazados por espacios), y le dices a iBug ese número.
Ejemplo 1:
In: aaabbccccccbbbaaacccccaabbbaaaaa
Out: 4
Descripción: si b
se elimina completamente de la barra, iBug podría obtener 4 partes. También puede obtener 4 partes quitando b
y c
, como se muestra a continuación
aaabbccccccbbbaaacccccaabbbaaaaa # Original string
aaa cccccc aaacccccaa aaaaa # Remove 'b'
aaa aaa aa aaaaa # Remove 'b' and 'c'
Y esa es la cantidad máxima de partes que iBug puede obtener de esta barra
Ejemplo 2
In: 111aa___9999____aaa99111__11_a_aa999
Result: 111aa 9999 aaa99111 11 a aa999
Out: 6
Descripción: Al eliminar solo el guión bajo, iBug puede obtener 6 partes de la barra y eso es lo máximo.
Ejemplo 3
In: __________
Out: 1
Descripción: ¿Qué? ¿Quieres cortar esto? Solo es posible obtener 1 parte si no la corta en absoluto.
Ejemplo 4
In:
Out: 0
Descripción: no hay nada que cortar, así que cero.
También hay algunas reglas que iBug quiere que los programas obedezcan:
A iBug no le gustan las lagunas estándar y están prohibidas.
Mientras funcione, no necesita ser un programa completo. También se acepta una función que toma la entrada de un parámetro y da salida a través del valor de retorno.
Se permiten entradas y salidas flexibles. Su programa o función puede tomar una cadena, o una serie de caracteres, o lo que sea más fácil de manejar. Puede dar el resultado imprimiendo el número o devolviéndolo.
Ejemplos de casos de prueba (pero no limitados a estos)
aaabbbaaa = 2
123456789 = 5
AaAaAaAa = 4
aaabcccdedaaabefda = 6
________ = 1
(empty) = 0
Como se trata de un código de golf , ¡el programa más corto (en bytes) en cada idioma gana!
Extra
iBug aprecia mucho si puede proporcionar una explicación para su programa, a pesar de que no afecta su puntuación (todavía es la longitud en bytes).
2468
, para el segundo, eliminar bd
.
2,4,6,8
del primero y b,d,f
del segundo.
123456789
rinde 5? ¿Y cómoaaabcccdedaaabefda
rinde 6? Obtengo 2 y 4 respectivamente para estos dos casos de prueba.