Sử dụng chuyển đổi cơ sở
Câu trả lời này là một câu hỏi muốn nghệ thuật ASCII bao gồm các nhân vật + |-
và dòng mới. Vì chỉ có 5 ký tự có thể, những ký tự này có thể được coi là số 5 cơ sở và được chuyển đổi thành byte, đóng gói 3,45 ký tự cho mỗi byte.
Khai thác thường xuyên
Thông thường, dữ liệu sẽ có một số quy tắc, ngay cả khi những quy tắc đó không đủ mạnh để sử dụng các công cụ cụ thể như phản chiếu. Chẳng hạn, trong câu hỏi trên, đầu ra mong muốn có các dòng mới cách đều nhau trong suốt bài kiểm tra, vì văn bản có dạng hình chữ nhật. Tôi đã khai thác điều này để rút ngắn mã của mình, bằng cách sử dụng chức năng phân chia của Pyth thành n mảnh, sau đó tham gia vào dòng mới.
Biết các công cụ của bạn, và chọn một công cụ phù hợp cho công việc.
Các công cụ xử lý văn bản mạnh mẽ và hiệu quả nhất mà tôi biết là:
Động cơ Regex : ///
, Retina, Perl, theo thứ tự trao đổi sức mạnh / sự đồng nhất.
Sử dụng nếu điều bạn muốn làm có thể được mô tả chính xác trong các thay thế regex, chẳng hạn như câu trả lời này
Các công cụ xử lý văn bản tối nghĩa: gema, v.v. (Tôi chắc chắn có những công cụ khác, nhưng chúng quá tối nghĩa)
Sử dụng nếu họ có một tính năng chính xác là những gì bạn cần, không có gì khác. Chẳng hạn như trong câu hỏi này , với kết hợp đệ quy của gema.
Các ngôn ngữ chơi gôn mã chung: CJam, Pyth, v.v.
Sử dụng nếu bạn đang khai thác một số phức tạp tinh vi đủ để không có công cụ nào khác thực hiện công việc hoặc nó chỉ thực hiện công việc ngắn hơn.
Hãy thử nhiều cách tiếp cận
Điều này áp dụng trong mọi câu hỏi golf-code, nhưng đặc biệt ở đây. Bạn sẽ không biết liệu một sự đều đặn có thể khai thác được hay không cho đến khi bạn dùng thử. Có thể bằng nhiều ngôn ngữ.