Thứ Tư, 13 tháng 1, 2016

TRÒ CHƠI CÁC Ô VUÔNG THẦN BÍ


Xét một bảng có 8 ô vuông trong đó mỗi ô vuông có một màu khác nhau, các mùa được ký hiệu bởi 8 số nguyên dương đầu tiên. Các trạng thái của bảng được cho bởi dãy ký hiệu màu của các ô được viết lần lượt theo chiều kim đồng hồ bắt đầu từ góc trái trên và kết thúc ở góc trái dưới.
1
2
3
4
8
7
6
5
Ví dụ trạng thái của bảng trong hình trên được cho bởi dãy (1, 2, 3, 4, 5, 6, 7, 8). Trạng thái này được gọi là trạng thái khởi đầu.
Có thể dùng 3 phép biến đổi cơ bản có tên là ‘A’, ‘B’, ‘C’  trong đó:
      ‘A’: Đổi chỗ dòng trên và dòng dưới
      ‘B’: thực hiện một phép hoán vị vòng quanh sang phải
      ‘C’ Quay theo chiều kim đồng hồ 4 ô giữa
Biết rằng từ trạng thái khởi đầu luôn có thể chuyển về một trạng thái bất kỳ bằng cách dùng các phép biến đổi cơ bản nói trên. Tác động của 3 phép biến đổi cơ bản được mô tả trong hình sau:
+ Phép A
1
2
3
4

1
2
3
4
1
2
3
4
A
8
7
6
5
8
7
6
5
1
2
3
4
8
7
6
5

8
7
6
5
+ Phép B
1
2
3
4

1
2
3
4
1
2
3
4
B
4
1
2
3
8
7
6
5
5
8
7
6
8
7
6
5

8
7
6
5
+ Phép C
1
2
3
4

1
2
3
4
1
2
3
4
C
1
7
2
4
8
7
6
5
8
6
3
5
8
7
6
5

8
7
6
5

Trong đó các số viết bên cạnh bảng dùng để chỉ các ô vuông của bảng và ô vuông ở vị trí p chứa số i có nghĩa là sau khi áp dụng phép biến đổi tương ứng ô vuông mà vị trí trước khi biến đổi của nó là i được chuyển đến vị trí p
Yêu cầu: Viết chương trình tìm dãy biến đổi cơ bản để chuyển bảng từ trạng thái khởi đầu về một trạng thái cho trước sao cho số phép biến đổi là ít nhất có thể.
Dữ liệu vào: File OVUONG.INP chứa 8 số nguyên liền nhau mô tả trạng thái đích
Dữ liệu ra: ghi vào file OVUONG.OUT
+ Dòng đầu tiên ghi số phép biến đổi của dãy
+ Các dòng tiếp theo ghi dãy các phép biến đổi theo thứ tự, mỗi phép biến đổi ghi trên một dòng
Ví dụ:

OVUONG.INP
OVUONG.OUT
26845731
7
B
C
A
B
C
C
B