Giới thiệu
Hầu hết những người chơi mã ở đây thêm giải thích cho bài nộp của họ, vì vậy sẽ dễ hiểu hơn những gì đang diễn ra. Thông thường các codelines đi bên trái và giải thích tương ứng bên phải với một số loại dấu phân cách. Để làm cho nó trông đẹp, các dấu phân cách đều nằm trên cùng một cột. Ngoài ra văn bản giải thích dài thường được gói sang dòng tiếp theo, vì vậy người đọc không phải cuộn theo chiều ngang để đọc mọi thứ.
Tuy nhiên, khi bạn muốn chỉnh sửa lời giải thích này vì bạn đã tạo ra một số golf điên, cuối cùng bạn thường dành thời gian để làm cho lời giải thích của bạn trở lại đẹp hơn. Vì đây là một nhiệm vụ rất lặp đi lặp lại, bạn muốn viết một chương trình cho việc này.
Các thách thức
Đưa ra một vài dòng mã với lời giải thích và một dấu phân cách, xuất mã được định dạng độc đáo với lời giải thích.
Thí dụ
Đầu vào
shM-crz1dc4. "ANDBYOROF # z = đầu vào rz1 # chuyển đổi đầu vào thành chữ hoa đầu vào phân chia cd # trên dấu cách c4. "ANDBYOROF # tạo danh sách các từ trong chuỗi được đóng gói sẽ bị bỏ qua - # lọc những từ đó ra hM # chỉ lấy chữ cái đầu tiên của tất cả các từ s # nối chúng thành một chuỗi
Đầu ra
shM-crz1dc4. "ANDBYOROF # z = đầu vào rz1 # chuyển đổi đầu vào thành chữ hoa đầu vào phân chia cd # trên dấu cách c4. "ANDBYOROF # tạo danh sách các từ trong chuỗi được đóng gói sẽ là # mặc kệ - # lọc những từ đó ra hM # chỉ lấy chữ cái đầu tiên của tất cả các từ s # nối chúng thành một chuỗi
Một cookie cho người đầu tiên có thể tìm ra mã này làm gì.
Thuật toán định dạng
- Tìm dòng mã dài nhất (không bao gồm phần giải thích và khoảng trắng giữa mã và dấu phân cách).
- Thêm 5 khoảng trắng sau dòng mã này và nối thêm dấu phân cách tương ứng. Đây là dòng tham khảo.
- Điều chỉnh mọi dòng khác cho dòng tham chiếu này, sao cho tất cả các bộ tách biệt đều nằm trong cùng một cột.
- Bao bọc tất cả các dòng dài hơn 93 ký tự thành một dòng mới theo cách sau:
- Tìm từ cuối cùng ở cuối cột 93 hoặc thấp hơn.
- Lấy tất cả các từ sau cái này và bọc chúng vào một dòng mới với dấu phân cách hàng đầu và khoảng cách chính xác. Không gian giữa hai từ đó phải được xóa, vì vậy dòng đầu tiên kết thúc bằng một ký tự từ và dòng thứ hai bắt đầu bằng một từ sau dấu phân cách.
- Nếu dòng kết quả vẫn dài hơn 93 ký tự thì thực hiện lại cho đến khi mỗi dòng dưới 94 ký tự.
Ghi chú
- Một từ bao gồm các ký tự không phải khoảng trắng. Các từ được phân tách bằng một khoảng trắng.
- Việc gói từ luôn luôn có thể. Điều này có nghĩa là không có từ nào dài đến mức nó sẽ làm cho việc gói không thể thực hiện được.
- Đầu vào sẽ chỉ chứa ASCII có thể in và sẽ không có bất kỳ khoảng trắng nào
- Dấu phân cách sẽ chỉ xuất hiện một lần trên mỗi dòng.
- Trong khi lời giải thích có thể có độ dài không giới hạn, dấu phân cách và mã chỉ có thể có độ dài tối đa kết hợp của
93 - 5 = 87
ký tự. 5 ký tự là khoảng cách giữa mã và dấu phân cách. Mã và dấu phân cách sẽ luôn dài ít nhất một ký tự. - Đầu vào có thể chứa các dòng trống. Chúng sẽ không bao giờ chứa bất kỳ ký tự nào (ngoại trừ một dòng mới nếu bạn lấy đầu vào dưới dạng chuỗi nhiều dòng). Những dòng trống đó cũng phải có mặt trong đầu ra.
- Mỗi dòng sẽ có một số mã, một dấu phân tách và một lời giải thích. Ngoại lệ là các dòng trống.
- Bạn có thể lấy đầu vào ở bất kỳ định dạng hợp lý nào, miễn là nó không được xử lý trước. Làm cho nó rõ ràng trong câu trả lời của bạn mà bạn sử dụng.
- Đầu ra có thể là một chuỗi nhiều dòng hoặc một danh sách các chuỗi.
Quy tắc
- Chức năng hoặc chương trình đầy đủ cho phép.
- Quy tắc mặc định cho đầu vào / đầu ra.
- Tiêu chuẩn áp dụng.
- Đây là môn đánh gôn , do đó, số byte thấp nhất sẽ thắng. Tiebreaker là trình trước đó.
Các trường hợp thử nghiệm
Định dạng đầu vào ở đây là danh sách các chuỗi biểu thị các dòng và một chuỗi đơn cho dấu phân cách. Cả hai được phân tách bằng dấu phẩy. Đầu ra là một danh sách các chuỗi.
['shM-crz1dc4. "ANDBYOROF # z = input', '', 'rz1 # chuyển đổi đầu vào thành chữ hoa', 'cd # split input on space', 'c4." ANDBYOROF # tạo danh sách các từ từ được đóng gói chuỗi sẽ bị bỏ qua ',' - # lọc các từ đó ra ',' hM # chỉ lấy chữ cái đầu tiên của tất cả các từ ',' s # nối chúng thành một chuỗi '], "#" -> [' shM-crz1dc4 . "ANDBYOROF # z = input ',' ',' rz1 # chuyển đổi đầu vào thành chữ hoa ',' cd # split input on space ',' c4." ANDBYOROF # tạo danh sách các từ từ một chuỗi được đóng gói sẽ là ' , ' # mặc kệ', '- # lọc những từ đó ra ',' hM # chỉ lấy chữ cái đầu tiên của tất cả các từ ',' s # nối chúng thành một chuỗi '] ['Cododecode e # Giải thích', 'sdf dsf sdf e # A Rất rất rất rất rất rất rất dài rất dài dài dài dài dài dài giải thích dài và nó cứ ngày càng dài hơn', '', 'một số thêm codee # và một số giải thích thêm '], "e #" -> [' codecodecode e # Giải thích ',' sdf dsf sdf e # A Rất rất rất rất rất rất rất rất dài rất dài ',' e # dài dài dài giải thích dài dài và nó tiếp tục dài hơn ',' e # và dài hơn ',' ',' thêm một số mã e # và một số giải thích thêm ']
Chúc mừng mã hóa!
length of the longest code-line + 5
. Điều này cũng áp dụng cho các dòng chỉ chứa một lời giải thích, bởi vì chúng được gói.