iBug hat kürzlich eine lange Stange aus zusammengesetzten, aber wertvollen Materialien bekommen. Die Bar ist so lang, dass iBug sie nicht ohne Weiteres für Credits verkaufen kann, also möchte er sie kürzen. Die Stange besteht aus so zerbrechlichen und magischen Materialien, dass bei Bruch eines Teils auch alle Teile der Stange aus demselben Material brechen, was ein willkürliches Schneiden erschwert.
iBug möchte die Leiste in so viele Stücke wie möglich schneiden. Er liebt auch sehr kurze Programme und Code-Golfen, deshalb machte er eine abstrakte Analyse seines Problems.
Die magische Leiste von iBug wird wie folgt als Zeichenfolge dargestellt (oder als Array oder Zeichenfolge, wenn Sie dies bevorzugen):
aaabbccccccbbbaaacccccaabbbaaaaa
Jeder Buchstabe in der Zeichenfolge steht für ein magisches Material. Die Leiste entspricht immer der RegEx ^\w*$, sodass sich möglicherweise bis zu 63 Materialien in der Leiste befinden. Ein "Teil" ist eine fortlaufende Folge von Zeichen, die nicht durch Leerzeichen getrennt sind.
iBug möchte, dass Sie ein Programm schreiben, das die maximale Anzahl der Teile berechnet, die er erhalten kann, wenn null oder mehr Zeichensätze vollständig entfernt (durch Leerzeichen ersetzt) werden, und iBug diese Zahl mitteilen.
Beispiel 1:
In: aaabbccccccbbbaaacccccaabbbaaaaa
Out: 4
Beschreibung: Wenn bes vollständig von der Leiste entfernt wird, könnte iBug 4 Teile bekommen. Er kann auch 4 Teile durch Entfernen von bund erhalten c, wie unten gezeigt
aaabbccccccbbbaaacccccaabbbaaaaa # Original string
aaa cccccc aaacccccaa aaaaa # Remove 'b'
aaa aaa aa aaaaa # Remove 'b' and 'c'
Und das ist die maximale Anzahl von Teilen, die iBug von dieser Leiste erhalten kann
Beispiel 2:
In: 111aa___9999____aaa99111__11_a_aa999
Result: 111aa 9999 aaa99111 11 a aa999
Out: 6
Beschreibung: Durch Entfernen nur des Unterstrichs kann iBug 6 Teile aus der Leiste entfernen, und das ist das Maximum.
Beispiel 3:
In: __________
Out: 1
Beschreibung: Was? Willst du das schneiden? Es ist nur möglich, 1 Teil zu bekommen, wenn Sie es überhaupt nicht schneiden.
Beispiel 4:
In:
Out: 0
Beschreibung: Es gibt nichts zu schneiden, also null.
Es gibt auch einige Regeln, denen iBug folgen soll:
iBug mag keine Standardlücken und sie sind verboten.
Solange es funktioniert, muss es kein vollständiges Programm sein. Eine Funktion, die Eingaben von einem Parameter entgegennimmt und über den Rückgabewert ausgibt, wird ebenfalls akzeptiert.
Flexible Ein- und Ausgabe sind erlaubt. Ihr Programm oder Ihre Funktion kann eine Zeichenfolge oder ein Array von Zeichen enthalten oder alles, was Sie am einfachsten zu handhaben finden. Sie können die Ausgabe geben, indem Sie die Nummer ausdrucken oder zurücksenden.
Beispiel-Testfälle (aber nicht darauf beschränkt)
aaabbbaaa = 2
123456789 = 5
AaAaAaAa = 4
aaabcccdedaaabefda = 6
________ = 1
(empty) = 0
Da dies ein Code-Golf ist , gewinnt das kürzeste Programm (in Bytes) in jeder Sprache!
Extra
iBug ist sehr dankbar, wenn Sie eine Erklärung für Ihr Programm angeben können, auch wenn dies keinen Einfluss auf Ihre Bewertung hat (es ist immer noch eine Länge in Byte).
2468, für das zweite entfernen bd.
2,4,6,8von der ersten und b,d,fvon der zweiten.
1234567895? Und wie ergibt sichaaabcccdedaaabefda6? Für diese beiden Testfälle bekomme ich jeweils 2 und 4.