(Đây là câu hỏi golf-code đầu tiên của tôi)
Khi tôi còn là một đứa trẻ, bố và tôi đã phát minh ra một trò chơi trong đó biển số xe chúng ta thấy trên ô tô có thể cho một số điểm nhất định dựa trên một số quy tắc khá đơn giản:
Số lượng X của cùng một chữ cái hoặc số cho X-1 điểm, ví dụ:
22 = 1 point
aa = 1 point
5555 = 3 points
Các số phải ở cạnh nhau, vì vậy 3353
chỉ cho 1 điểm, vì 5 số phá vỡ chuỗi 3 giây.
Một chuỗi các số X theo thứ tự tăng dần hoặc giảm dần, tối thiểu là 3, cho X điểm, ví dụ:
123 = 3 points
9753 = 4 points
147 = 3 points
Hệ thống điểm chỉ hoạt động đối với các số có 1 chữ số, vì vậy 1919
không cho điểm và 14710
chỉ cho 3, (147).
Trình tự có thể được kết hợp để tạo thêm điểm, ví dụ:
1135 = 4 points (1 point for 11 and 3 points for 135)
34543 = 6 points (3 points for 345 and 3 points for 543)
Tuy nhiên, bạn không được phép cắt một chuỗi lớn hơn thành 2 chuỗi nhỏ hơn để có thêm điểm: 1234 = 123, 234 (6 points)
không được phép.
Nhiệm vụ của bạn là, đưa ra một chuỗi, để xác định số điểm mà biển số xe đưa ra.
Ở Đan Mạch, các biển số xe được cấu trúc như thế này: CC II III, trong đó C là ký tự và I là số nguyên, và do đó, ví dụ đầu vào của tôi sẽ phản ánh cấu trúc này. Nếu bạn muốn, bạn có thể làm cho trình tự phù hợp với cấu trúc của riêng bạn, hoặc, nếu bạn cảm thấy thực sự mạo hiểm, hãy để chương trình phân tích cấu trúc của biển số xe và do đó nó hoạt động trên bất kỳ loại biển số nào trên thế giới. Mặc dù rõ ràng cấu trúc bạn quyết định sử dụng trong câu trả lời của bạn.
Bạn có thể lấy đầu vào theo bất kỳ cách nào bạn muốn, một chuỗi hoặc một mảng dường như có ý nghĩa nhất đối với tôi.
Kiểm tra đầu vào | đầu ra:
AA 11 111 | 5
AB 15 436 | 3
OJ 82 645 | 0
UI 65 456 | 6
HH 45 670 | 5
YH 00 244 | 5
AJ 00 754 | 1
Do tính chất của việc chọn cấu trúc của riêng bạn hoặc thậm chí bao gồm tất cả các cấu trúc, tôi không nhất thiết phải thấy cách người chiến thắng có thể được xác định rõ ràng. Tôi cho rằng người chiến thắng sẽ là byte ngắn nhất trên cấu trúc mà người ta đã quyết định. (Và đừng lấy đầu vào như CICIC, chỉ để giúp bạn dễ dàng hơn)
CHỈNH SỬA:
Do ý kiến hỏi, tôi có thêm một vài thông tin để chia sẻ: Một chuỗi các số tăng dần hoặc giảm dần đề cập đến một chuỗi số học, vì vậy X +/- a * 0, X +/- a * 1, ... X +/- a * n v.v ... Vì vậy, 3-5-7 chẳng hạn là 3 + 2 * 0, 3 + 2 * 1, 3 + 2 * 2. Tuy nhiên, chuỗi không cần phải bắt đầu từ 0 cũng không kết thúc bằng 0.
EDIT THÊM:
Bạn có thể cung cấp đầu vào theo bất kỳ cách nào bạn muốn, bạn không cần phải nhập dấu cách, dấu gạch ngang hoặc bất kỳ thứ gì khác làm cho biển số dễ đọc hơn. Nếu bạn có thể lưu byte bằng cách chỉ chấp nhận chữ in hoa hoặc một cái gì đó tương tự, bạn có thể làm điều đó cũng tốt. Yêu cầu duy nhất là chương trình của bạn có thể lấy một chuỗi / mảng / bất cứ thứ gì chứa cả ký tự và số và xuất ra số điểm chính xác theo các quy tắc đã nêu.
XX 87 654
. Tôi đã đưa ra một cái gì đó là chính xác cho tất cả các trường hợp thử nghiệm của bạn nhưng bằng cách nào đó không chính xác cho trường hợp này .. Làm việc để sửa nó.
CCIIIII
, không có khoảng trắng), nếu không thì vấn đề này thiếu một tiêu chí giành chiến thắng khách quan, mà chúng tôi yêu cầu ở đây. Như hiện tại, và (Không lấy đầu vào như CICIC, chỉ để dễ dàng cho chính mình), rất là chủ quan. Cấu trúc được chấp nhận là gì?
IA99999
(chứa một chuỗi các điểm mã giảm, nhưng không phải là số).