รบกวนโปรแกรมเมอร์ ขอถามเรื่อง 15 puzzle ครับ

http://mypuzzle.org/sliding
อันนี้ตัวอย่างครับ เป็นเกมส์เลื่อนตัวเลขสนุกๆ โดยในที่นี้เงื่อนไขการชนะคือเรียงตัวเลขแล้วช่องว่างอยู่ขวาล่างสุดครับ ซึ่งผมเขียนได้แล้วแต่ทว่าา..

เข้าเรื่องเลยนะครับ
ผมเขียนภาษา C# ครับ ผมติดตรงการหาผลเฉลยครับ ของปริศนานี้ครับ เช่นเฉลยว่าถ้าตัวต่อในลักษณะนี้ต้องเลื่อนอะไรบ้างจะสมบูรณ์..ตามลำดับ
ซึ่ง  ไม่รู้จะเขียนยังไงดี
เอกสารที่อ่านๆมาก็อังกฤษทั้งนั้น ทำมาหลายวันแล้ว ตอนนี้อีกสองวันจะส่ง รบกวนหาผู้สอนทีครับเดือดร้อนจริง

ความรู้ที่มี
c# แบบไม่แข็งแรงเท่าไหร่ ทิ้งไปนาน ถ้าภาษาเขียนมาแอดวานซ์ๆ จะใช้เวลาทำความเข้าใจนานมากๆ เข้าใจ class บ้าง
data structure&algorithm ที่พอได้..  เข้าใจหลักการ link-list, stack, heap, tree , A*, searching บางแบบ breadF depthF , hashing, sort ต่างๆ, Manhattan distance, walking distance

เล่นด้วยมือเป็น (แต่ผมคิดว่าถ้าเอาโค้ดเล่นด้วยมือไปย่อยปัญหาแล้วเขียนลง c# น่าจะไม่เวิร์ค)

*********** ตรงนี้ข้อมูลเพิ่มเติม ครับ ***************************
ให้อธิบายเป็นภาพว่าควรทำไงให้ได้ผลเฉลย ได้ครับ cost, heuristic, function  

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

มาถึงตัวแรกผมก็ชงักเลย เพราะไม่เคย ทำ ทรี ที่มากกว่าสองแขน เลยกลัวๆ ว่า จะทำไงดี เพราะเรื่องนี้ ต้องใช้ทรี สามแขน
แต่ทำมือเข้าใจได้ว่าใช้สามแขน

1. ทำงานทุกเส้นทาง ยกเว้นทางที่ทำให้กลับไปเป็นผลลัพธ์เดิม(ไม่เดินกลับทางเดิม)

- 2. เอาเส้นทางค่าน้อยสุด จับตัวเท่ากัน ลงคิว
- 3. เริ่มเดินตามเส้นทาง..
- 3. ในระหว่างทำถ้าเจอเส้นทางที่มีค่า function เท่ากัน ยัดลงคิวต่อ
- 4. พอทำจนหมด
- 5. กลับมาที่ รากก่อนจะไปเมื่อกี้
- วนไปข้อสอง

ประเด็นคือเขียนลง c# ไงฟระ
ผมไปดูที่ต่างๆมาในบอร์ด ภาษาอังกฤษ  มีแต่อะไรที่ผมไม่เข้าใจเต็มไปหมด

**************************************************************

!!! สิ่งที่ผมต้องการ..

ผมอยากได้เอกสารเรื่องพวกนี้เป็นภาษาไทย หรือไม่ก็ source code ก็ได้ครับ
แต่ขอเป็นแบบโปรเจคนะครับ จะได้จับต้นชนปลายถูก อะไรง่ายๆที่คุณคิดว่าผมไม่งง  เจอโค้ดแปลกๆ ผมก็งงแล้วครับ ต่อให้มันไม่ทำอะไรก็เหอะ..
ไม่ก็ใครพอทราบว่าปัญหาผมเป็นแบบไหนก็ช่วยแนะนำก็ได้ครับ  

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

เอาง่ายๆไว้ก่อน..แล้วเป็นไปได้อ่ะครับ..

ขอบคุณมากครับ
คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 1
อันนี้ตัวอย่างการเขียน N-ary tree โดย C# ครับ เป็นภาษาอังกฤษนะครับ อยากให้ลองพยายามหน่อย http://stackoverflow.com/a/2012855

จากตัวอย่างใช้ Linked List ในการสร้าง Tree ตาม concept พื้นฐานโดยทั่วไป คือ Parent Node จะเก็บ NTree ลูกเอาไว้ตามลำดับชั้นไปเรื่อยๆครับ

ปัญหาต่อมาคือจะเก็บ state ไว้ใน data ของ tree ยังไง อันนี้คิดว่าไม่ยากเกินความสามารถครับ

ปล ผมไม่รู้ว่าเคยเขียนอะไรมาก่อนบ้างหรือไม่ เช่น การทำ BFS แบบพื้นฐานๆ บน Binary Tree ซึ่งจริงๆควรจะเริ่มเป็นลำดับๆไป
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่