Bu mücadelede size girdi olarak alfabetik bir dize verilecektir. Verilen bir girişin "anti-string" ini, tüm ters çevrilen harflerin olduğu gibi string olarak tanımlayacağız. Örneğin
AaBbbUy -> aAbBBuY
Girdi olarak bir dize alan ve anti-string de bitişik bir alt dize olan en uzun bitişik alt dizgiyi arayan bir program yazmalısınız. İki alt dizgi üst üste binmemelidir.
Örnek olarak size bir dize verildiyse
fAbbAcGfaBBagF
Kalın bölümler en uzun dize anti-string çifti olacaktır.
Programınız çifti bulduktan sonra, her birini tek bir karakter halinde daraltmalıdır. Bunu, her alt dizinin ilk karakteri dışındakileri kaldırarak yapması gerekir. Örneğin yukarıdaki dize
fAbbAcGfaBBagF
olacaktı
fAcGfagF
Ardından, programınız en uzun dize anti-string çifti tek bir karakter veya daha kısa olana kadar işlemi tekrar etmelidir.
Örneğin, aynı dizeyle çalışmak, çökmeden sonraki en uzun yeni çift
fAcGfagF
Böylece tekrar ipi daraltırız.
fAcGag
Şimdi string daha fazla daraltılamaz, bu yüzden onu çıkarmalıyız.
Aday çiftler (örneğin AvaVA
) arasında bir bağ olması durumunda, indirim yapabilir ( AaA
ya da AvV
değil Aa
).
Bu kod-golf'dür, bu nedenle cevaplar daha az byte'ın daha iyi olmasıyla byte olarak puanlanacaktır.
Test Kılıfları
fAbbAcGfaBBagF -> fAcGag
AvaVA -> AaA / AvV
QQQQQQQ -> QQQQQQQ
fAbbAcQQQQaBBacqqqqA -> fAbcQBcq
gaq -> gaq
fAbbAcGfaBBagFaBBa -> fcGaBBag
Motivasyonları
Bu sorun rastgele görünse de, temel poligonları işlemek için kod yaparken karşılaştığım bir problem. Bu işlem, temel bir poligonu daha küçük n -gona düşürmek için kullanılabilir . Denemeden sonra küçük bir golf yapacağını düşündüm.
aaaAAAaaa -> aAaaa
?