EDIT Tôi đã sửa đổi từ ngữ của các quy tắc để làm cho một số điều rõ ràng rõ ràng hơn. Tôi cũng đã thêm một số điểm nhấn để làm rõ một số điểm nhầm lẫn rõ ràng và xác định rõ ràng tùy chọn tạo một chương trình độc lập thay vì một chức năng.
Mục tiêu ở đây là tạo ra một hàm lấy tệp văn bản (hoặc chuỗi) và hoán chuyển nó để các dòng trở thành cột và ngược lại.
Thí dụ:
Tôi là một văn bản. Chuyển tôi Bạn có làm được không
Kết quả trong:
ITC ra aan mn sy một PO ồ ts eed xo tm .ei .t ?
Những quy định:
- Bạn được phép giả định rằng các ký tự khoảng trắng duy nhất được sử dụng là
" "
và"\n"
không có khoảng trắng ở cuối trên bất kỳ dòng nào. - Bạn có thể cho rằng tệp là ASCII. Điểm đánh dấu endline nào bạn muốn sử dụng là tùy thuộc vào bạn. (CRLF hoặc LF). Nó phải hoạt động chính xác trên ví dụ, nhưng nó cũng sẽ hoạt động trên bất kỳ đầu vào nào thỏa mãn các giả định trên.
- Bạn có thể phải chèn khoảng trắng (như trong ví dụ) trong đó không có khoảng trống nào để giữ các cột thẳng hàng.
- Kết quả của bạn không được có khoảng trắng ở cuối trên bất kỳ dòng nào .
- Ký tự dòng mới cuối cùng (cho dòng cuối cùng) là tùy chọn.
- Nó nên là một chức năng hoặc một chương trình hoàn chỉnh. Nếu hàm của bạn chấp nhận một chuỗi, thì nó sẽ trả về kết quả dưới dạng chuỗi. Nếu nó chấp nhận tên tệp, thì bạn trả về tên của tệp mà bạn đã lưu kết quả. Bạn cũng được phép viết một chương trình hoàn chỉnh chấp nhận đầu vào từ STDIN và đưa ra kết quả chính xác cho STDOUT; nếu bạn làm điều này, bạn không được xuất bất cứ thứ gì sang STDERR.
- Thủ tục ngắn nhất sẽ thắng, nhưng tôi sẽ đưa ra bất kỳ câu trả lời nào tôi thích.
Dựa trên các quy tắc, đầu ra trên ví dụ dài 53 hoặc 52 byte (đối với các dòng mới của LF) tùy thuộc vào dòng mới cuối cùng có được bao gồm hay không.
Lưu ý: Đây không phải là một yêu cầu cụ thể, nhưng nếu chức năng của bạn, khi chạy hai lần liên tiếp không giống với bản gốc (dòng mới cuối cùng có thể khác và bất kỳ dòng trống nào ở cuối tệp sẽ bị xóa), thì bạn sẽ có lẽ phá vỡ một trong những quy tắc.