Dalam tantangan ini, Anda akan diberikan string alfabet sebagai input. Kami akan mendefinisikan "anti-string" dari input yang diberikan menjadi string dengan huruf semua huruf terbalik. Sebagai contoh
AaBbbUy -> aAbBBuY
Anda harus menulis sebuah program yang mengambil string sebagai input dan mencari substring bersebelahan terpanjang yang anti-stringnya juga substring yang berdekatan. Dua substring tidak harus tumpang tindih.
Sebagai contoh jika Anda diberi string
fAbbAcGfaBBagF
Bagian yang dicetak tebal akan menjadi pasangan string anti-string terpanjang.
Program Anda harus, setelah menemukan pasangan, pisahkan mereka masing-masing menjadi satu karakter. Ini harus dilakukan dengan menghapus semua kecuali karakter pertama dari setiap substring. Misalnya string di atas
fAbbAcGfaBBagF
akan menjadi
fAcGfagF
Program Anda kemudian harus mengulangi proses tersebut hingga pasangan string anti-string terpanjang adalah satu karakter atau lebih pendek.
Misalnya bekerja dengan string yang sama, pasangan terpanjang baru setelah keruntuhan
fAcGfagF
Jadi kami kembali menutup string
fAcGag
Sekarang string tidak dapat diciutkan lebih lanjut sehingga kita harus menampilkannya.
Dalam kasus ikatan antara pasangan kandidat (contoh AvaVA
) Anda dapat melakukan pengurangan ( AaA
atau AvV
, tetapi tidak Aa
).
Ini adalah kode-golf sehingga jawaban akan dicetak dalam byte dengan lebih sedikit byte yang lebih baik.
Uji Kasus
fAbbAcGfaBBagF -> fAcGag
AvaVA -> AaA / AvV
QQQQQQQ -> QQQQQQQ
fAbbAcQQQQaBBacqqqqA -> fAbcQBcq
gaq -> gaq
fAbbAcGfaBBagFaBBa -> fcGaBBag
Motivasi
Sementara masalah ini mungkin tampak sewenang-wenang itu sebenarnya masalah yang saya temui saat membuat kode untuk memproses poligon mendasar. Proses ini dapat digunakan untuk mengurangi poligon dasar menjadi n- gon yang lebih kecil . Setelah saya mencobanya saya pikir itu akan membuat golf kecil yang menyenangkan.
aaaAAAaaa -> aAaaa
?