iBug a récemment obtenu une longue barre en matériaux composites, mais précieux. La barre est si longue qu'iBug ne peut pas facilement la vendre pour des crédits, donc il veut la couper. La barre est faite de matériaux si fragiles et magiques que, si une pièce est cassée, toutes les parties de la barre faites du même matériau se briseront également, ce qui rendra difficile la coupe arbitraire.
iBug veut couper la barre en autant de morceaux que possible. Il aime également les programmes très courts et le golf de code, il a donc fait une analyse abstraite de son problème.
La barre magique d'iBug est représentée sous la forme d'une chaîne (ou d'un tableau ou d'une séquence de caractères si vous préférez), comme ceci:
aaabbccccccbbbaaacccccaabbbaaaaa
Chaque lettre de la chaîne représente un matériau magique. La barre correspond toujours au RegEx ^\w*$
, il peut donc y avoir jusqu'à 63 matériaux dans la barre. Une "partie" est une séquence consécutive de tous les caractères qui ne sont pas séparés par des espaces.
iBug veut que vous écriviez un programme qui calcule le maximum de parties qu'il pourrait obtenir, si zéro ou plusieurs jeux de caractères sont complètement supprimés (remplacés par des espaces), et dites à iBug ce nombre.
Exemple 1:
In: aaabbccccccbbbaaacccccaabbbaaaaa
Out: 4
Description: S'il b
est complètement retiré de la barre, iBug pourrait obtenir 4 parties. Il peut également obtenir 4 parties en retirant b
et c
, comme indiqué ci-dessous
aaabbccccccbbbaaacccccaabbbaaaaa # Original string
aaa cccccc aaacccccaa aaaaa # Remove 'b'
aaa aaa aa aaaaa # Remove 'b' and 'c'
Et c'est le nombre maximum de pièces que iBug peut obtenir de cette barre
Exemple 2:
In: 111aa___9999____aaa99111__11_a_aa999
Result: 111aa 9999 aaa99111 11 a aa999
Out: 6
Description: en supprimant uniquement le trait de soulignement, iBug peut obtenir 6 parties de la barre et c'est le maximum.
Exemple 3:
In: __________
Out: 1
Description: Quoi? Tu veux couper ça? Il n'est possible d'obtenir 1 partie que si vous ne la coupez pas du tout.
Exemple 4:
In:
Out: 0
Description: Il n'y a rien à couper, donc zéro.
Il y a aussi quelques règles auxquelles iBug veut que les programmes obéissent:
iBug n'aime pas les failles standard et elles sont interdites.
Tant qu'il fonctionne, il n'est pas nécessaire que ce soit un programme complet. Une fonction qui prend l'entrée d'un paramètre et donne une sortie via une valeur de retour est également acceptée.
Les entrées et sorties flexibles sont autorisées. Votre programme ou fonction peut prendre une chaîne, un tableau de caractères ou tout ce que vous trouvez le plus facile à gérer. Vous pouvez donner la sortie en imprimant le numéro ou en le renvoyant.
Exemples de cas de test (mais sans s'y limiter)
aaabbbaaa = 2
123456789 = 5
AaAaAaAa = 4
aaabcccdedaaabefda = 6
________ = 1
(empty) = 0
Puisqu'il s'agit d'un code-golf , le programme le plus court (en octets) dans chaque langue gagne!
Supplémentaire
iBug apprécie grandement si vous pouvez fournir une explication pour votre programme, même si cela n'affecte pas votre score (il est toujours en octets).
2468
, pour le second, supprimez bd
.
2,4,6,8
du premier et b,d,f
du second.
123456789
donne 5? Et commentaaabcccdedaaabefda
donne 6? J'obtiens respectivement 2 et 4 pour ces deux cas de test.