Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Vuông Latin (Latin Square) trong Python


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 n vớ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_end cho biến first_half_start.
    • Vòng lặp cho đến khi first_half_start đạt giá trị n:
      • In biến lặp first_half_start.
    • 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.

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