Vuông Latin là ma trận có mẫu đặc biệt. Xem các ví dụ để nhận diện mẫu:
1 2 2 1 1 2 3 3 1 2 2 3 1 1 2 3 4 4 1 2 3 3 4 1 2 2 3 4 1
Vuông Latin bạn nhận được sẽ có kích thước khác nhau như ví dụ trên. Nhưng nếu quan sát kỹ mẫu của các ma trận trên, bạn sẽ thấy số cuối của hàng trước trở thành phần tử đầu của hàng tiếp theo.
Đó là mẫu ẩn trong Vuông Latin. Viết chương trình tạo ma trận trên cho đầu vào n.
Thuật toán
- Khởi tạo
nvới bất kỳ số nào bạn thích. - Khởi tạo một số với giá trị
n + 1, gọi làfirst_half_end. - Vòng lặp từ 1 đến
n(bao gồm cả hai):- Gán giá trị
first_half_endcho biếnfirst_half_start. - Vòng lặp cho đến khi
first_half_startđạt giá trịn:- In biến lặp
first_half_start.
- In biến lặp
- Vòng lặp từ 1 đến
first_half_end:- In biến lặp.
- Giảm
first_half_endđi 1. - Chuyển sang hàng tiếp theo.
- Gán giá trị
Triển khai
Dưới đây là triển khai thuật toán trên trong Python
def generateLatinSquare(n):
first_half_end = n + 1
for i in range(1, n + 1):
first_half_start = first_half_end
while (first_half_start <= n):
print(first_half_start, end=" ")
first_half_start += 1
for second_half_start in range(1, first_half_end):
print(second_half_start, end=" ")
first_half_end -= 1
print()
print()
if __name__ == "__main__":
generateLatinSquare(2)
generateLatinSquare(3)
generateLatinSquare(4)
Đầu ra
Nếu chạy mã trên, bạn sẽ nhận được kết quả sau.
1 2 2 1 1 2 3 3 1 2 2 3 1 1 2 3 4 4 1 2 3 3 4 1 2 2 3 4 1