Dành một chút thời gian trên trang web này, tôi đã đến để tận hưởng mọi thứ càng ngắn càng tốt. Đó có thể là lý do tại sao gần đây tôi bị xúc phạm bởi các chuỗi chứa cùng một ký tự nhiều lần. Công việc của bạn là viết một hàm hoặc chương trình ngưng tụ một chuỗi đã cho theo các quy tắc sau:
Bắt đầu với một ngưng tụ 0 , đó là tìm cặp đầu tiên (ngoài cùng bên trái) của cùng một ký tự với 0 ký tự khác giữa chúng. Nếu tìm thấy một cặp như vậy, loại bỏ một trong hai ký tự và khởi động lại thuật toán bằng cách thực hiện một ngưng tụ 0 khác . Nếu không tìm thấy cặp nào như vậy, hãy tiến hành bước tiếp theo. Ví dụ:
programming
-C0->programing
aabbcc
-C0->abbcc
test
-C0->test
Sau đó thực hiện ngưng tụ 1 , đó là tìm cặp đầu tiên của cùng một ký tự với 1 ký tự khác giữa chúng. Nếu một cặp như vậy được tìm thấy, loại bỏ một trong số chúng và tất cả các ký tự giữa chúng và khởi động lại với độ ngưng tụ 0 . Nếu không tìm thấy cặp nào như vậy, hãy tiến hành bước tiếp theo. Ví dụ:
abacac
-C1->acac
java
-C1->ja
Tiếp tục với một ngưng tụ 2 và cứ thế đến một ngưng tụ n với n là độ dài của chuỗi gốc, mỗi lần khởi động lại sau khi ngưng tụ đã loại bỏ một số chữ cái. Ví dụ:
programing
-C2->praming
abcdafg
-C3->afg
Chuỗi kết quả được gọi là ngưng tụ và chứa mỗi ký tự nhiều nhất một lần.
Đầu vào:
Một chuỗi chữ thường của ký tự ascii có thể in được.
Đầu ra:
Các chuỗi ngưng tụ theo các quy tắc trên.
Ví dụ:
examples -> es
programming -> praming
puzzles -> puzles
codegolf -> colf
andromeda -> a
abcbaccbabcb -> acb
if(x==1):x++ -> if(x+
fnabnfun -> fun
abcdefae -> abcde
Ví dụ chi tiết để làm rõ cách thức hoạt động của thuật toán:
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
Cách tiếp cận của bạn không phải thực hiện thuật toán từ phía trên miễn là giải pháp của bạn và thuật toán trả về cùng một đầu ra cho tất cả các đầu vào được phép. Đây là một thách thức mã golf .
Cảm ơn @Linus vì những bình luận hữu ích trong hộp cát!