Theppitak's blog

My personal blog.

16 กุมภาพันธ์ 2552

On Rubik's Cube Solutions

blog ควันหลงจากการพักผ่อนวันอาทิตย์ครับ..

ใคร ๆ ก็เล่นรูบิกกัน ผมมีรูบิกลูกหนึ่งที่บ้าน มีคนให้มานานแล้ว ก็ไม่ได้ไปแตะต้องมัน จนน้องชายมากระตุ้น จนตอนนี้ท่าทางจะเหลือผมบ้าอยู่คนเดียวในบ้านละ

วิธีมาตรฐานของรูบิก ก็คงไม่พ้น วิธี ของ Jessica Fridrich ที่เรียกว่า CFOP แต่จนป่านนี้ ผมยังไม่สามารถทำได้ เพราะมัวแต่ไปสนใจวิธีอื่นที่น่าสนใจกว่าสำหรับผม

ผมเป็นประเภทขี้เกียจท่องจำน่ะ วิธีของ Fridrich จะต้องจำสูตรมากมายในขั้นสุดท้าย พอไปเจอวิธีที่ง่ายกว่า อาศัยความเข้าใจมากกว่าท่องจำ ก็เลยไม่เคยกลับมาหัด CFOP อีกเลย ในแง่หนึ่ง การท่องจำสูตรอาจช่วยลดขั้นตอนได้เยอะ แต่ผมก็พอใจที่จะทำในทางที่ตัวเองถนัด และจำติดหัวได้นาน แม้จะใช้เวลาแก้มากกว่าก็ตาม

ผมทดลองวิธีต่าง ๆ ไปมาพอสมควร แต่แล้วก็พบว่า วิธีของ Mark Jeays จะกลายเป็นวิธียืนพื้นสำหรับผมเสมอ ๆ สามารถปรับวิธีของคนอื่นมาใช้ได้ตลอด โดยวิธีนี้ แบ่งออกได้เป็น 4 ขั้นใหญ่ ๆ คือ

  1. Solve (F2L - 2) โดยไม่ต้องทำ F2L (First-2-Layers) ให้ครบ แต่เว้นไว้มุมหนึ่ง ซึ่งประกอบด้วย 2 ชิ้น ขอบหนึ่ง มุมหนึ่ง เอาไว้เป็น /tmp
  2. Solve (Last Layer Edges + 1) โดยวางชิ้นขอบ 5 ชิ้นที่เหลือของชั้นสุดท้าย และของชั้นกลางที่เว้นไว้ ให้ถูกตำแหน่ง โดยใช้ /tmp ที่เว้นไว้นั้นให้เป็นประโยชน์
  3. Permute (Last Layer Corners + 1) โดยวางมุมของชั้นสุดท้าย และของชั้นล่างที่เว้นไว้ ให้ถูกตำแหน่ง แต่ไม่จำเป็นต้องหันถูกด้าน เป็นขั้นแรกที่มีสูตรให้จำ แต่ก็ไม่ซับซ้อนเกินไป
  4. Orient (Last Layer Corners + 1) โดยหันด้านของมุมทั้งห้าที่ถูกตำแหน่งจากขั้นที่แล้วให้ถูกด้าน ขั้นนี้มีสูตรเหมือนกัน แต่ปรากฏว่าเป็นสูตรที่ดัดแปลงมาจากสูตรของขั้นที่แล้ว ผมเลยถือว่ามีสูตรแค่ชุดเดียวให้จำสำหรับวิธีของ Jeays นี้!

สำหรับการดัดแปลงสูตรอื่นมาใช้กับวิธีของ Jeays เนื่องจากวิธีการต่าง ๆ มักจะทำ F2L จนครบหมด แล้วสูตรของชั้นสุดท้ายก็จะซับซ้อนเหมือนกันหมด ฉะนั้น การปรับมาใช้กับวิธีนี้ ส่วนมากเลยปรับใช้กับแค่ขั้นแรก คือ (F2L - 2) เท่านั้น ยกเว้นวิธีที่มาทางใช้กระบวนท่าน้อยด้วยกัน ถึงจะปรับใช้กับขั้นท้าย ๆ ได้

วิธีต่าง ๆ ที่ผมได้ใช้ในขั้น (F2L - 2):

  • มั่ว โดยทำหน้าแรกแบบไม่มีสูตร แล้วใช้สูตรหมุนชิ้นขอบ 90 องศามาทำชั้นกลาง อันนี้เริ่มจากทำหน้าแรกได้เอง แล้วไปต่อไม่ถูก เลยหาสูตรทำชั้นกลางมาเพิ่ม
  • วิธีที่สอนที่ Rubiks.com (วีดิทัศน์) โดยทำกากบาท ตามด้วยมุมของชั้นแรก แล้วใช้สูตรหมุนชิ้นขอบ 90 องศาทำขอบชั้นกลาง เป็นวิธีที่สอนกันโดยทั่วไปนั่นแล เพียงแต่เมื่อใช้กับวิธีของ Jeays การเว้นไว้แถวหนึ่งทำให้ไม่ต้องเสียเวลากับขอบชิ้นสุดท้ายที่บางทีวางถูกที่แต่สลับหน้าซะงั้น ผมใช้วิธีนี้อยู่นานเหมือนกัน
  • วิธีของ Lars Petrus เป็นวิธีที่ไม่ได้เริ่มจากกากบาท แต่เริ่มจากมุม 2x2x2 แล้วขยายเป็น 2x2x3 แล้วไปหมุนที่ชั้นเปลือกรูปตัว V ที่เหลือเพื่อทำ F2L ขั้นสุดท้ายให้เป็น 2x3x3 แต่แน่นอนว่าผมเว้นไว้แถวหนึ่ง ทำให้ในขั้นนี้ไม่ต้องพยายามแยกแยะ good edge, bad edge ให้ครบ เอาแค่ 2 edge ที่จำเป็นก็พอแล้ว วิธีของ Lars Petrus เขาบอกว่าเป็นวิธี non-destructive คือทำแล้วไม่ต้องไปพังของเดิมชั่วคราวเพื่อทำกลับใหม่ แต่ปรากฏว่าเป็นวิธีที่ต้องตาไวมาก ๆ และต้องคอยจำบริเวณที่ทำไปแล้วให้ดี อย่าไปพังมัน ที่ต้องจำเพราะมุมที่เลือกอาจไม่ซ้ำกันในแต่ละครั้ง ไม่เหมือนการทำกากบาทในวิธีอื่นที่ตำแหน่งค่อนข้างตายตัว อีกทั้งบริเวณที่ทำจะซิกแซ็กไปมา ถ้าไม่คล่องเรื่องมองภาพสามมิติจะลำบากพอสมควร แต่ก็นับเป็นวิธีที่น่าสนใจวิธีหนึ่ง
  • วิธีของ Jeays เอง หลังจากไปลองวิธีอื่น ก็กลับมาดูที่วิธีของครูบ้าง ปรากฏว่า ไม่ต้องจำสูตรอะไรเลย แม้แต่สูตรหมุนชิ้นขอบ 90 องศา เพราะการมี /tmp ทำให้ทุกอย่างง่ายดาย ไม่ต้องกลัวทำของเดิมพัง นี่ถ้าผมได้ทำวิธีนี้ก่อน ผมคงจะไม่ได้จำสูตรอะไรเลยอย่างแท้จริง
  • วิธีของ Fridrich (hint) และแล้วก็กลับมาหาวิธีของต้นตำรับอีกครั้งอย่างไม่ตั้งใจ ซึ่งวิธีนี้หลังจากทำกากบาทแล้ว จะทำ F2L ด้วยการจับชิ้นขอบและชิ้นมุมมาลงที่มุมทีละคู่ โดยไม่ได้แยกขั้นตอนระหว่างมุมกับขอบ วิธีนี้มีอธิบายเป็นภาษาไทยอยู่ที่ Thailandcube.com (อ่านยากนิดหนึ่ง น้ำเยอะไปหน่อย ต้องใช้ตะเกียบควานหาเนื้อเอา) ก็เป็นวิธีที่น่าสนใจ ในแง่ที่น่าจะลดขั้นตอนได้เยอะ เป็นวิธีล่าสุดที่ผมกำลังลองฝึกอยู่

ส่วนขั้นถัด ๆ มาของวิธี Jeays นั้น เนื่องจากเป็นการใช้ความเข้าใจเป็นหลัก จึงไม่ค่อยจำเป็นต้องหาสูตร และเนื่องจากเป็นการแตกแขนงออกไปจากวิธีอื่น จึงไม่ค่อยมีสูตรมาปรับใช้ แต่ก็ไม่ใช่ไม่มี เพราะผมไปเจอวิธีหนึ่งที่แนวทางคล้ายกัน คือไม่เน้นกระบวนท่า เป็น วิธีของ Phillp Marshall

วิธีของ Marshall มีสูตรเพียง 2 สูตรเท่านั้น สูตรหนึ่ง ใช้ทำขอบ อีกสูตรหนึ่ง ใช้ทำมุม เป็นวิธีที่สูตรน้อยก็จริง แต่ต้องอาศัยจินตนาการสามมิติค่อนข้างมาก ผมไม่ได้หัดทั้งกระบวนการ แต่ปรากฏว่า สูตรมุมที่แสนเรียบง่ายของเขา สามารถเอามาลดขั้นตอนในวิธีของ Jeays ได้อย่างเหมาะเจาะ!

ในขั้น Permute (Last Edge Corners + 1) นั้น ถ้าทำตามวิธีของ Jeays จะต้องสลับชิ้นมุมทีละคู่ จนกว่าจะวางตำแหน่งถูกทั้งหมด แต่ถ้าใช้สูตรมุมของ Marshall ประกอบ จะเหลือการสลับที่จำเป็นอย่างมาก 2 ครั้งเท่านั้น และบ่อยครั้งที่สลับแค่ครั้งเดียวก็พอ ที่เหลือใช้สูตรมุมของ Marshall มาหมุนชิ้นมุมทีเดียว 3 ชิ้นลงล็อคเป๊ะ!

และทั้งหมดนี้ คือวิธีที่ผมใช้แก้ Rubik's cube ในปัจจุบัน โดยที่ยังทำ CFOP ไม่สำเร็จเลยสักครั้ง..

เวลาที่ใช้.. คงไม่เร็วอะไรมากมายครับ ติดแหง็กอยู่ที่ 2 นาทีมานานแล้ว ที่เล่ามาทั้งหมด ก็เพื่อจะบอกว่า ผมสนุกกับ approach มากกว่า performance แต่ก็พยายามปรับปรุง performance ด้วย approach (ที่ลดการท่องจำให้เหลือน้อยที่สุด) ด้วยเหมือนกัน

จอมยุทธ์ท่านได้มีข้อชี้แนะโปรดอย่าช้า

อ้อ.. รูปประกอบใน blog สร้างเอาเองด้วยโปรแกรม Wings 3d บน Debian ครับ หลังจากที่พยายามอยู่ทั้งวันกับ Blender โดยไม่ประสบความสำเร็จ คิดว่าถ้าทำ texture บน Blender ได้สำเร็จ คงงามกว่านี้เยอะ :-P

ป้ายกำกับ: ,

2 ความเห็น:

แสดงความเห็น (มีการกลั่นกรองสำหรับ blog ที่เก่ากว่า 14 วัน)

<< กลับหน้าแรก

hacker emblem