Hình lập phương Rubik gồm 3 x 3 x 3 hình lập phương nhỏ hơn. Ban đầu, mỗi trong số 6 mặt của hình lập phương Rubik được sơn một màu khác nhaụ Tất cả các mặt của hình lập phương Rubik gồm 3 x 3 mặt của lớp 9 hình lập phương nhỏ hơn.
Hãy tưởng tượng, bạn đang nhìn vào một trong 6 mặt của hình lập phương Rubik. Lớp gồm 3 x 3 hình lập phương nhỏ hơn bạn nhìn thấy có thể quay một góc là bội số của 90 độ, trong đó trục quay là đường trực giao của mặt đó và đi qua tâm của nó. Kết quả là một mặt khác gồm 3 x 3 x 3 hình lập phương nhỏ với sơ đồ màu bị quay và màu trên bốn mặt xung quanh thay đổị
Trong bài toán này, các mặt hình lập phương được đặt tên thay vì sơn màu: U = Lên, R = Phải, F = Trước, B = Sau, L = Trái và D = Dướị Bất kỳ một chuỗi hành động quay mặt lập phương nào đều có thể biểu diễn bằng một chuỗi ký tự {U, R, F, B, L, D} trong đó mỗi ký tự thay thế một lần quay góc 90 độ theo chiều kim đồng hồ của một mặt tương ứng.
Yêu cầu
Hãy viết chương trình cho phép người sử dụng giải lặp lại một trong ba bài toán nhỏ đưa ra theo thứ tự bất k ỳ. Bạn có thể giả sử độ dài của mỗi chuỗi nhập vào không quá 35 ký tự.
1. Bài toán nhỏ này là bản dịch từ của một chuỗi hành động quay cho trước sang một chuỗi hành động quay mà không một hành động quay nào được lặp lại quá 3 lần trong chuỗị Thuật toán phải loại bỏ những chuỗi dữ liệu vào không đúng.
2. Bài toán nhỏ thứ hai yêu cầu tìm xem hai chuỗi hành động quay cho trước có cho cùng kết quả khi áp dụng vào cùng một hình lập phương Rubik không?
Ví dụ:
3. Bài toán nhỏ thứ ba yêu cầu xác định số lần áp dụng một chuỗi hành động quay cho trước
với trạng thái ban đầu của hình lập phương Rubik cho đến khi hình lập phương trở lại trạng
thái ban đầụ Hãy chọn số lần áp dụng nhỏ nhất (> 0).
Ví dụ
Yêu cầu kỹ thuật
Lưu lời giải vào một tệp văn bản ASCII có tên "C:\IOI\DAY-2\423-PROG.xxx". Phần mở rộng .xxx là:
- .BAS với chương trình BASIC, .C với chương trình C,