Bu sitede biraz zaman geçirdikten sonra olayların mümkün olduğunca kısa olmasını sağlamaya başladım. Son zamanlarda, aynı karakterleri birden fazla defa içeren dizgilerden rahatsız olduğum için bu olabilir. Senin işin bir işlev veya program yazmaktır yoğunlaşır aşağıdaki kurallara göre belirli bir dize:
0 yoğunlaştırma ile başlayın , bu, aralarında 0 karakter bulunan aynı karakterlerin ilk (en soldaki) çiftini arar. Eğer böyle bir çift bulunursa, iki karakterden birini kaldırın ve başka bir 0-yoğunlaştırma gerçekleştirerek algoritmayı yeniden başlatın . Eğer böyle bir çift bulunmazsa, bir sonraki adıma geçin. Örnekler:
programming
-C0->programing
aabbcc
-C0->abbcc
test
-C0->test
Ardından 1 yoğunlaştırma yapın ; bu, aralarında 1 karakter daha bulunan aynı karakterin ilk çiftini arar. Böyle bir çift bulunursa, onlardan birini ve aralarındaki tüm karakterleri kaldırın ve 0 yoğunlaştırma ile yeniden başlayın . Eğer böyle bir çift bulunmazsa, bir sonraki adıma geçin. Örnekler:
abacac
-C1->acac
java
-C1->ja
Bir devam 2-yoğunlaşma ve böylece için yukarı n-yoğunlaşma ile n orijinal dize uzunluğu olan bir yoğunlaşma sonra yeniden başlatmayı her zaman bazı harfler kaldırıldı. Örnekler:
programing
-C2-> -C3-praming
abcdafg
>afg
Elde edilen dizgeye yoğun olarak adlandırılır ve her bir karakteri en çok bir defa içerir.
Giriş:
Yazdırılabilir ascii karakterlerinden oluşan küçük bir dize.
Çıktı:
Yoğunlaştırılmış yukarıdaki kurallara göre dize.
Örnekler:
examples -> es
programming -> praming
puzzles -> puzles
codegolf -> colf
andromeda -> a
abcbaccbabcb -> acb
if(x==1):x++ -> if(x+
fnabnfun -> fun
abcdefae -> abcde
Algoritmanın nasıl çalıştığını açıklamak için ayrıntılı örnekler:
fnabnfun -C0-> fnabnfun -C1-> fnabnfun -C2-> fnfun -C0-> fnfun -C1-> fun -C0-> fun
-C1-> fun -C2-> ... -C8-> fun
abcbaccbabcb -C0-> abcbacbabcb -C0-> abcbacbabcb -C1-> abacbabcb -C0-> abacbabcb
-C1-> acbabcb -C0-> acbabcb -C1-> acbcb -C0-> acbcb -C1-> acb -C0-> acb
-C1-> ... -C12-> acb
Yaklaşımınız, çözümünüz ve algoritma izin verilen tüm girdiler için aynı çıktıyı döndürdüğü sürece algoritmayı yukarıdan uygulamak zorunda değildir. Bu bir kod golf mücadelesi.
Yardımcı sanal alan yorumları için @Linus'a teşekkür ederiz !