Setelah menghabiskan waktu di situs ini saya datang untuk menikmati hal-hal sesingkat mungkin. Itu mungkin alasan mengapa saya baru-baru ini agak tersinggung oleh string yang berisi karakter yang sama lebih dari sekali. Tugas Anda adalah menulis fungsi atau program yang mengembunkan string yang diberikan sesuai dengan aturan berikut:
Mulailah dengan 0-kondensasi , yaitu mencari pasangan pertama (paling kiri) dari karakter yang sama dengan 0 karakter lain di antara mereka. Jika pasangan seperti itu ditemukan, hapus salah satu dari dua karakter dan nyalakan kembali algoritma dengan melakukan kondensasi 0 lainnya . Jika tidak ada pasangan yang ditemukan, lanjutkan ke langkah berikutnya. Contoh:
programming
-C0->programing
aabbcc
-C0->abbcc
test
-C0->test
Kemudian lakukan kondensasi 1 , yaitu mencari pasangan pertama dari karakter yang sama dengan 1 karakter lainnya di antara mereka. Jika pasangan semacam itu ditemukan, hapus salah satu dari mereka dan semua karakter di antara mereka dan mulai kembali dengan 0-kondensasi . Jika tidak ada pasangan yang ditemukan, lanjutkan ke langkah berikutnya. Contoh:
abacac
-C1->acac
java
-C1->ja
Lanjutkan dengan 2-kondensasi dan seterusnya hingga n-kondensasi dengan n menjadi panjang string asli, setiap kali restart setelah kondensasi menghapus beberapa huruf. Contoh:
programing
-C2->praming
abcdafg
-C3->afg
String yang dihasilkan disebut kental dan berisi setiap karakter paling banyak satu kali.
Memasukkan:
String huruf kecil dari ascii-karakter yang dapat dicetak.
Keluaran:
The kental tali sesuai dengan aturan di atas.
Contoh:
examples -> es
programming -> praming
puzzles -> puzles
codegolf -> colf
andromeda -> a
abcbaccbabcb -> acb
if(x==1):x++ -> if(x+
fnabnfun -> fun
abcdefae -> abcde
Contoh terperinci untuk memperjelas cara kerja algoritma:
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
Pendekatan Anda tidak harus mengimplementasikan algoritma dari atas selama solusi Anda dan algoritma mengembalikan output yang sama untuk semua input yang diizinkan. Ini adalah tantangan kode-golf .
Terima kasih kepada @Linus untuk komentar kotak pasir yang bermanfaat!