Làm thế nào về các nút và con trỏ?
Giả sử luôn có 6 mặt và 1 nút đó biểu thị 1 ô vuông trên 1 mặt:
r , g , b
r , g , b
r , g , b
| | |
r , g , b - r , g , b
r , g , b - r , g , b
r , g , b - r , g , b
Một nút có một con trỏ đến mỗi nút bên cạnh nó. Xoay vòng tròn chỉ di chuyển con trỏ (Số nút / Số mặt) -1 nút trên, trong trường hợp này 2. Vì tất cả các phép quay là xoay vòng tròn, bạn chỉ cần xây dựng một rotate
hàm. Nó là đệ quy, di chuyển mỗi nút một không gian và kiểm tra xem nó đã di chuyển chúng đủ chưa, vì nó sẽ thu thập số lượng nút và luôn có bốn mặt. Nếu không, tăng số lần di chuyển giá trị và gọi lại xoay.
Đừng quên nó được liên kết đôi, vì vậy cũng cập nhật các nút mới được chỉ. Sẽ luôn có chiều cao * Chiều rộng của các nút được di chuyển, với một con trỏ được cập nhật trên mỗi nút, do đó cần có Chiều cao * Chiều rộng * 2 số con trỏ được cập nhật.
Vì tất cả các nút trỏ vào nhau, chỉ cần đi vòng quanh cập nhật từng nút khi bạn đến với nó.
Điều này sẽ làm việc cho bất kỳ khối có kích thước, không có trường hợp cạnh hoặc logic phức tạp. Nó chỉ là một con trỏ đi bộ / cập nhật.