iBug gần đây có một thanh dài làm bằng vật liệu composite, nhưng có giá trị. Thanh quá dài đến nỗi iBug không thể dễ dàng bán nó để lấy tín dụng, vì vậy anh ấy muốn cắt nó. Thanh được làm bằng các vật liệu mỏng manh và ma thuật đến nỗi, nếu một phần bị phá vỡ, tất cả các phần của thanh làm từ cùng một vật liệu cũng sẽ bị vỡ, khiến bạn khó có thể cắt tùy ý.
iBug muốn cắt thanh thành nhiều mảnh nhất có thể. Anh ấy cũng thích các chương trình rất ngắn và chơi golf mã, vì vậy anh ấy đã thực hiện một phân tích trừu tượng về vấn đề của mình.
Thanh ma thuật của iBug được biểu diễn dưới dạng một chuỗi (hoặc một mảng hoặc một chuỗi các ký tự nếu bạn thích), như thế này:
aaabbccccccbbbaaacccccaabbbaaaaa
Mỗi chữ cái trong chuỗi đại diện cho một vật liệu ma thuật. Thanh luôn khớp với RegEx ^\w*$
, vì vậy có thể có tới 63 tài liệu trong thanh. "Phần" là một chuỗi liên tiếp của bất kỳ ký tự nào không được phân tách bằng dấu cách.
iBug muốn bạn viết một chương trình tính toán các phần tối đa mà anh ta có thể nhận được, nếu không hoặc nhiều bộ ký tự được loại bỏ hoàn toàn (thay thế bằng khoảng trắng) và báo cho iBug số đó.
Ví dụ 1:
In: aaabbccccccbbbaaacccccaabbbaaaaa
Out: 4
Mô tả: Nếu b
được gỡ bỏ hoàn toàn khỏi thanh, iBug có thể nhận được 4 phần. Anh ta cũng có thể có được 4 phần bằng cách loại bỏ b
và c
, như được hiển thị dưới đây
aaabbccccccbbbaaacccccaabbbaaaaa # Original string
aaa cccccc aaacccccaa aaaaa # Remove 'b'
aaa aaa aa aaaaa # Remove 'b' and 'c'
Và đó là số phần tối đa iBug có thể nhận được từ thanh này
Ví dụ 2:
In: 111aa___9999____aaa99111__11_a_aa999
Result: 111aa 9999 aaa99111 11 a aa999
Out: 6
Mô tả: Bằng cách chỉ xóa phần gạch dưới, iBug có thể nhận được 6 phần từ thanh và đó là mức tối đa.
Ví dụ 3:
In: __________
Out: 1
Mô tả: Cái gì? Bạn muốn cắt cái này? Chỉ có thể nhận được 1 phần nếu bạn không cắt nó.
Ví dụ 4:
In:
Out: 0
Mô tả: Không có gì để cắt, vì vậy không.
Cũng có một số quy tắc mà iBug muốn các chương trình tuân theo:
iBug không thích sơ hở tiêu chuẩn và chúng bị cấm.
Miễn là nó hoạt động, nó không cần phải là một chương trình đầy đủ. Hàm lấy đầu vào từ một tham số và cung cấp đầu ra thông qua giá trị trả về cũng được chấp nhận.
Đầu vào và đầu ra linh hoạt được cho phép. Chương trình hoặc chức năng của bạn có thể lấy một chuỗi, hoặc một mảng các ký tự hoặc bất cứ thứ gì bạn thấy dễ xử lý nhất. Bạn có thể cung cấp đầu ra bằng cách in số hoặc trả lại.
Các trường hợp thử nghiệm mẫu (nhưng không giới hạn ở những trường hợp này)
aaabbbaaa = 2
123456789 = 5
AaAaAaAa = 4
aaabcccdedaaabefda = 6
________ = 1
(empty) = 0
Vì đây là môn đánh gôn , chương trình ngắn nhất (tính bằng byte) trong mỗi ngôn ngữ sẽ thắng!
Thêm
iBug đánh giá rất cao nếu bạn có thể đưa ra lời giải thích cho chương trình của mình, mặc dù điều đó không ảnh hưởng đến việc ghi điểm của bạn (nó vẫn có độ dài tính bằng byte).
2468
, cho cái thứ hai, loại bỏ bd
.
2,4,6,8
từ lần đầu tiên và b,d,f
từ lần thứ hai.
123456789
năng suất 5? Vàaaabcccdedaaabefda
năng suất 6 như thế nào? Tôi nhận được 2 và 4 tương ứng cho hai trường hợp thử nghiệm này.