Giới thiệu
Viết một chương trình hoàn chỉnh xoay một khối hình chữ nhật gồm các ký tự ASCII 90 độ theo chiều kim đồng hồ. Khi chương trình được xoay 90 độ theo chiều kim đồng hồ, nó sẽ xoay một khối các ký tự ASCII 90 ngược chiều kim đồng hồ.
Quy tắc
- Bạn không sử dụng các ma trận tích hợp xoay hoặc hoán vị ma trận. Ví dụ: trong MATLAB / Octave
rot90
và toán tử chuyển vị'
không được phép. - Bạn phải viết một chương trình hoàn chỉnh sử dụng STDIN và STDOUT hoặc tương đương gần nhất.
- Chương trình của bạn phải là hình chữ nhật và giả sử đầu vào cũng là hình chữ nhật.
- Đầu vào và đầu ra là một chuỗi phân tách dòng mới và sẽ không có dòng mới.
Khi chạy với mã nguồn làm đầu vào, chương trình của bạn phải tự xoay 90 độ theo chiều kim đồng hồ. Đầu ra phải là chương trình thứ hai trong cùng ngôn ngữ xoay đầu vào 90 độ ngược chiều kim đồng hồ. Khi chương trình được xoay được cung cấp mã nguồn của nó làm đầu vào, nó sẽ xuất mã nguồn của chương trình gốc.
Lưu ý: Cả hai chương trình phải hoạt động cho bất kỳ đầu vào nào , không chỉ mã nguồn riêng của chúng, vì vậy không được phép sử dụng một ký tự một ký tự.
Thí dụ
Nói sau đây là một chương trình hợp lệ xoay 90 độ đầu vào của nó trong một ngôn ngữ giả định exampleLang.
^f a2% 3
lk (^_^&
v
D8 $4 /
Khi chạy với chính nó như là đầu vào, nó xuất ra một chương trình hợp lệ khác để quay đầu vào ngược chiều kim đồng hồ:
D l^
8 kf
$ (a
4 ^2
_%
^
/v&3
Chương trình thứ hai này, khi được trao cho chính nó làm đầu vào, sẽ xuất ra chương trình gốc. Lưu ý rằng dòng trống nên có bốn khoảng trắng và có một khoảng trắng ở dòng thứ hai đến dòng cuối cùng không thể được hiển thị trong đánh dấu. Làm rõ:
$ examplelang program < program > rotProg
$ examplelang rotProg < rotProg > program1
$ diff -s program program1
Files program and program1 are identical
Chương trình ngắn nhất sẽ thắng. Sơ hở tiêu chuẩn bị cấm.
:.+
thể bị phá vỡ qua nhiều dòng?