Dans ce défi, vous recevrez une chaîne alphabétique en entrée. Nous définirons "l'anti-chaîne" d'une entrée donnée comme étant la chaîne avec la casse de toutes les lettres inversées. Par exemple
AaBbbUy -> aAbBBuY
Vous devez écrire un programme qui prend une chaîne en entrée et recherche la sous-chaîne contiguë la plus longue dont l'anti-chaîne est également une sous-chaîne contiguë. Les deux sous-chaînes ne doivent pas se chevaucher.
Par exemple, si vous avez reçu la chaîne
fAbbAcGfaBBagF
Les parties en gras seraient la paire anti-cordes la plus longue.
Votre programme doit, une fois qu'il a trouvé la paire, les réduire en un seul caractère chacun. Il doit le faire en supprimant tout sauf le premier caractère de chaque sous-chaîne. Par exemple, la chaîne ci-dessus
fAbbAcGfaBBagF
deviendrait
fAcGfagF
Votre programme doit ensuite répéter le processus jusqu'à ce que la paire anti-chaîne la plus longue soit un seul caractère ou plus courte.
Par exemple, en travaillant avec la même chaîne, la nouvelle paire la plus longue après l'effondrement est
fAcGfagF
Donc, nous réduisons à nouveau la chaîne
fAcGag
Maintenant, la chaîne ne peut plus être réduite, nous devons donc la sortir.
Dans le cas d'une égalité entre les paires de candidats (exemple AvaVA
), vous pouvez effectuer l'une AaA
ou l' autre réduction ( ou AvV
, mais pas Aa
).
Il s'agit de code-golf donc les réponses seront notées en octets avec moins d'octets mieux.
Cas de test
fAbbAcGfaBBagF -> fAcGag
AvaVA -> AaA / AvV
QQQQQQQ -> QQQQQQQ
fAbbAcQQQQaBBacqqqqA -> fAbcQBcq
gaq -> gaq
fAbbAcGfaBBagFaBBa -> fcGaBBag
Les motivations
Bien que ce problème puisse sembler arbitraire, c'est en fait un problème que j'ai rencontré lors de la création de code pour traiter les polygones fondamentaux. Ce processus peut être utilisé pour réduire un polygone fondamental à un n -gon plus petit . Après l'avoir essayé, j'ai pensé que cela ferait un joli petit golf.
aaaAAAaaa -> aAaaa
?