Mọi người đều biết mã hóa chiều dài chạy là gì. Nó đã là chủ đề của nhiều thử thách golf-code. Chúng ta sẽ xem xét một biến thể nhất định.
Thí dụ
Normal: 11222222222222222222233333111111111112333322
Run-length: 112(19)3(5)1(11)2333322
Số trong ngoặc đơn chỉ định số lần biểu tượng trước đó xảy ra. Trong ví dụ, chỉ có 5 ký tự trở lên được mã hóa. Điều này là do mã hóa chạy từ 4 trở xuống không cải thiện số lượng ký tự.
Thử thách
Viết hàm / chương trình thực hiện biến thể mã hóa độ dài chạy này, nhưng cũng có thể mã hóa các lần chạy của hai ký hiệu. Việc chạy hai biểu tượng cũng phải được đặt trong ngoặc đơn. Một nhóm cũng sẽ được đặt trong ngoặc đơn. Chương trình của bạn phải chấp nhận một chuỗi làm đầu vào và xuất chuỗi đã sửa đổi với các sửa đổi rút ngắn chuỗi.
Thí dụ
Normal: 111244411144411144411167676767222222277777222222277777123123123123
Double run-length: 1112((444111)(3))67676767((2(7)7(5))(2))123123123123
Ghi chú
111
đã không được mã hóa vì mã hóa nó (1(3)
) không ngắn hơn.- Chuỗi
444111
xảy ra 3 lần nên được mã hóa. 676767
đã không được mã hóa vì((67)(4))
dài hơn trước.222222277777222222277777
đã không được mã hóa thành((222222277777)(2))
. Tại sao? Bởi vì222222277777
chính nó có thể được giảm xuống2(7)7(5)
.123123123123
không được mã hóa bởi vì chương trình của bạn có nghĩa vụ xử lý các lần chạy của hai biểu tượng chứ không phải ba.
Đây là mã golf nên mã ngắn nhất sẽ thắng. Tie-breaker là trình sớm.
Nếu tôi bỏ lỡ bất cứ điều gì, hoặc nếu bạn không chắc chắn về bất cứ điều gì xin vui lòng thông báo cho tôi trong các ý kiến.
441444144414
-> ((4414)(3))
?
4414
về mặt kỹ thuật là một loạt 4. Từ ngữ của tôi chỉ là xấu.
111111111
được mã hóa như (1)(9)
?
67
s.