สี่เหลี่ยมมหัศจรรย์ จัตุรัสกล magic square 15

มีคนถามมาว่าจะเอาตัวเลข ตั้งแต่ 1 ถึง 9 เติมลงในช่องขนาด 3 x 3 ยังไงโดยที่ผลบวกในแต่ล่ะแถวและคอลัมน์ ร่วมทั้งแนวแทยงมีผลบวกเท่ากันคือ 15 วิธีคิดที่ผมทำก็ใช้ Mathematica หาตามถนัดครับ  แต่วิธีการของผมมันก็ง่ายๆครับช้าในระดับที่รับได้แล้วก็ไม่เหนื่อย 😛

ที่ทำก็คือเอาเลขมาเรียงสับเปลี่ยนกัน ซึ่งมันจะมีทั้งหมด 9! = 362880 แบบ จากนั้นก็เอาแต่ล่ะแบบมาทำเป็น matrix ขนาด 3 x 3 จากนั้นก็ตรวจผลรวมในแต่ล่ะแนวที่ต้องการ ถ้ามันตรง กับ 15 ก็เก็บไว้ ก็ทำแบบนี้ไปจนหมดครับ code ข้างล่างนี้ผมเขียนด้วย Mathematica แล้วรันบนเครื่อง Surface Pro ซึ่งมันใช้เวลาประมาณ 10 วินาที ครับ (เพื่อตรวจดูด้วยครับว่าถ้าผลรวมมันเป็นเลขอื่นตั้งแต่ 13 ถึง 18 มันจะมีหรือเปล่า)

square1square2

จริง ๆ แล้วปัญหาแบบนี้เราเรียกว่า Magic Square ครับ ลองไปเล่นดูครับ