In questa sfida ti verrà fornita una stringa alfabetica come input. Definiremo l'anti-stringa di un dato input come stringa con il caso di tutte le lettere invertite. Per esempio
AaBbbUy -> aAbBBuY
È necessario scrivere un programma che accetta una stringa come input e cerca la sottostringa contigua più lunga il cui anti-stringa è anche una sottostringa contigua. Le due sottostringhe non devono sovrapporsi.
Ad esempio se ti è stata data la stringa
fAbbAcGfaBBagF
Le parti in grassetto sarebbero la coppia anti-stringa di stringa più lunga.
Il tuo programma dovrebbe, una volta trovata la coppia, comprimerli in un singolo carattere ciascuno. Dovrebbe farlo rimuovendo tutto tranne il primo carattere di ogni sottostringa. Ad esempio la stringa sopra
fAbbAcGfaBBagF
potrebbe diventare
fAcGfagF
Il programma dovrebbe quindi ripetere il processo fino a quando la coppia anti-stringa di stringa più lunga è un singolo carattere o più corta.
Ad esempio, lavorando con la stessa stringa è la nuova coppia più lunga dopo il crollo
fAcGfagF
Quindi comprimiamo di nuovo la stringa
fAcGag
Ora la stringa non può essere ulteriormente compressa, quindi dovremmo emetterla.
Nel caso di un pareggio tra coppie candidate (esempio AvaVA
) è possibile effettuare una riduzione ( AaA
o AvV
, ma non Aa
).
Questo è code-golf, quindi le risposte verranno classificate in byte con un numero inferiore di byte migliori.
Casi test
fAbbAcGfaBBagF -> fAcGag
AvaVA -> AaA / AvV
QQQQQQQ -> QQQQQQQ
fAbbAcQQQQaBBacqqqqA -> fAbcQBcq
gaq -> gaq
fAbbAcGfaBBagFaBBa -> fcGaBBag
motivazioni
Mentre questo problema può sembrare arbitrario, in realtà è un problema che ho riscontrato durante la creazione di codice per elaborare poligoni fondamentali. Questo processo può essere utilizzato per ridurre un poligono fondamentale a un n -gon più piccolo. Dopo averlo provato, ho pensato che sarebbe stato un bel piccolo golf.
aaaAAAaaa -> aAaaa
?