ผมได้เคยแนะนำ Template ตัวนึงที่เจ๋งมากๆ จากทาง Microsoft นั่นก็คือ Sudoku puzzle solver ซึ่งนี้สามารถโหลดมาใช้ได้ฟรีๆ ที่นี่ https://templates.office.com/en-us/sudoku-puzzle-solver-tm10080972
ทุกครั้งที่เห็นไฟล์นี้ผมเองรู้สึกทึ่งมากๆ เพราะมันเป็น Template ที่สามารถแก้ปัญหา Sudoku ได้ด้วยสูตร Excel ล้วนๆ (โดยใช้เทคนิค Iterative Calculation) โดยไม่ได้พึ่งพาการเขียนโปรแกรมหรือการใช้ add in Solver อะไรทั้งสิ้น ซึ่งน่าอัศจรรย์มากๆ !
ใน Series นี้ผมจะสอนใช้งาน Template นี้ และจะพยายามแกะสูตรว่ามันใช้วิธีการยังไงในการทำงานจนได้คำตอบออกมาให้เราครับ ใครสนใจก็อ่านต่อยาวๆ ได้เลย ซึ่งบทความภาคแรกนี้จะเป็น Part การใช้งาน Template ก่อนนะครับ
สารบัญ
วิธีการใช้งานแบบง่าย
ก่อนอื่นก็ไปหาคำถาม sudoku มาจากในเน็ต เดี๋ยวเราเอาโจทย์ระดับกลางๆ มาละกัน สมมติเป็นอันนี้
หลังจากโหลดไฟล์มาแล้ว จริงๆ มันก็เขียนวิธีการใช้งานอยู่มุมซ้ายล่างอยู่แล้ว แต่ผมจะทำให้ดูพร้อมภาพประกอบละกันนะครับ
ก่อนอื่นให้กรอกตัวโจทย์ลงใน Starting Position ให้ครบ แล้วแก้ Game State ให้เป็นเลข 1 แล้วกด F9 เพื่อ Calculate จะเห็นว่าตัวเลขใน Possible Numbers นั้นหายไปบางส่วน ก็ให้กด F9 เพื่อ Cal ต่อไป
แล้วก็กด F9 ต่อไปอีก มันจะตัดตัวที่เป็นไปไม่ได้ออกไปเรื่อยๆ
กด F9 ต่อไปอีก มันจะเริ่มแสดงคำตอบเพิ่มมาแล้ว เช่น เลข 5 ที่ผมวงไว้
กด F9 ไปเรื่อยๆ จนได้ครบทุกคำตอบ จบ…
วิธี Reset ค่าใหม่
ให้ลบค่าใน Starting Position ออกให้หมด (ลากคลุมแล้วกดปุ่ม Del บน Keyboard ได้เลย) จากนั้นเลือก Game Stage เป็น 0 แล้วกดปุ่ม F9 เพื่อ Cal ใหม่ไปรัวๆ จนกว่าค่าจะหายหมด
ลองโจทย์แบบยากขึ้น
คราวนี้เราจะลองโจทย์ยากดูบ้าง ว่าจะติดปัญหาอะไรหรือไม่ โดยโจทย์ที่ผมลองจะเป็นอันนี้
พอลองกรอกลงไปแล้ว ตั้ง Game Stage เป็น 1 แล้ว F9 รัวๆๆๆ มันจะไปสุดที่นี่ คือ กด F9 ต่อก็ไม่มีคำตอบเพิ่มแล้ว
วิธีทำต่อคือให้ตั้งค่า Game Stage เป็น 2 แล้วค่อย F9 ต่อ คราวนี้คำตอบจะเริ่มโผล่มาแล้ว
พอ F9 ไปเรื่อยๆ สุดท้ายก็จะได้คำตอบครบ จบ!
แล้วมีโจทย์ที่ Template แก้ไม่ได้มั้ย?
มีสิ อย่างอันนี้คือระดับที่โคตะระยากมากๆๆๆๆ ผมลองใส่โจทย์นี้ไปแล้วแม้จะลอง Set Game Stage เป็น 2 ก็ตาม มันแก้เพิ่มไม่ได้เลยซักกะค่าเดียว 555
Game Stage 1 สุดที่เท่านี้
Game Stage 2 ก็ไม่ต่างกัน
ซึ่งวิธีไปต่อคือ เราต้องเป็นคนช่วยโปรแกรมพิมพ์ค่าที่เป็นไปได้ เพิ่มลงไปใน Starting position แล้วค่อยกด F9 ต่อ ซึ่งตรงนี้แหละที่ยาก เพราะโปรแกรมมันยังคิดไม่ออกเลยว่าจะใส่ค่าไหนดี 555
มันก็ต้องดูว่าช่องไหนเหลือค่าที่เป็นไปได้น้อยๆ แล้วก็ต้องทดลองเอาทีละค่า ว่ามันเปฺ็นไปได้มั้ย? เช่น ที่ผมวงไว้ จะมีที่เป็นไปได้ 2 ค่า กับ 3 ค่า
คือพอลองใส่ค่าดูแล้ว F9 ไปเรื่อยๆ ถ้าสุดท้าย Final Position มันตัน ก็แปลว่าเลขที่เราลองมันไม่ใช่ครับ เช่น แบบนี้
ถ้าจะลองค่าใหม่ก็ต้องไล่ Set Stage เป็น 0,1,2 ใหม่อีกทีนะครับ…
ผมลองมั่วอีกที เกือบออก แต่ก็ไม่ออกครับ 55
สรุปแล้ว ข้อนี้ตอบอะไรกันนะ… ใครหาคำตอบได้บอกที ยากจริงๆ T_T
และนี่ก็คือวิธีใช้งาน Template นะครับ ส่วนเรื่องการแกะสูตร รออ่านต่อหน้าได้เลย ยากสะใจแน่นอน