Latin Square เป็นเมทริกซ์ที่มีรูปแบบพิเศษ ลองดูตัวอย่างต่างๆ เพื่อศึกษารูปแบบ
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
Latin Square ที่ได้จะมีขนาดต่างกัน แต่ถ้าสังเกตรูปแบบของเมทริกซ์ข้างต้นอย่างละเอียด จะพบว่าตัวเลขสุดท้ายของแถวก่อนหน้าจะกลายเป็นองค์ประกอบแรกของแถวถัดไป นั่นคือรูปแบบที่ซ่อนอยู่ใน Latin Square เราต้องเขียนโปรแกรมที่สร้างเมทริกซ์ดังกล่าวสำหรับอินพุต n
อัลกอริทึม
- กำหนดค่า
nด้วยตัวเลขที่ต้องการ - กำหนดตัวเลข со значением
n + 1เรียกว่าfirst_half_end - ลูปที่วนจาก 1 ถึง
nทั้งสองข้าง:- กำหนดค่า
first_half_endให้กับตัวแปรfirst_half_start - ลูปจนกว่า
first_half_startจะถึงค่าn:- พิมพ์ตัวแปรที่วนลูป คือ
first_half_start
- พิมพ์ตัวแปรที่วนลูป คือ
- ลูปที่วนจาก 1 ถึง
first_half_end:- พิมพ์ตัวแปรที่วนลูป
- ลดค่า
first_half_endลง 1 - ขึ้นบรรทัดใหม่
- กำหนดค่า
การใช้งาน
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_end, 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)
เอาต์พุต
ถ้ารันโค้ดข้างต้น จะได้ผลลัพธ์ดังนี้:
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