กำหนดให้ห้องมีผนังล้อมรอบสี่ด้าน และมีกำแพงขวางในห้องแบบสุ่ม ดังรูป

สีดำแทนกำแพง สีขวาแทนที่ว่าง ห้องนี้แทนด้วยอาเรย์สองมิติ int[][] ขนาด w x h (แทน กว้าง x สูงของห้อง) รูปบนนี้แทนด้วย int[40][30] ห้องกว้าง (แนวนอน) 40 และ สูง (แนวตั้ง) 30 สมมติว่าอาเรย์นี้ชื่อ m จะได้ว่า m[0][0] แทนตำแหน่งมุมซ้ายบน และ m[39][29] แทนตำแหน่งมุมขวาล่าง ให้สังเกตว่าเราใช้ m[x][y] อ้างอิงตำแหน่ง (x,y) ของห้อง (อย่าคิดว่า เมื่อนำแต่ละช่องในอาเรย์วางทาบบนห้องแล้วตำแหน่งในอาเรย์จะตรงกับของห้อง เพราะถ้าเป็นเช่นนั้น จะต้องอ้างอิงตำแหน่งที่ (x,y) ของห้องด้วย m[y][x] ของอาเรย์ ขอเน้นอีกครั้งว่า เราใช้ m[x][y] อ้างอิงตำแหน่ง (x,y) ของห้อง)
ในคลาส Maze มีเมท็อด createMaze รับผิดชอบการสร้างห้องโดยประกันว่า กำแพงและช่องว่างทั้งหลายจะกว้างเป็นจำนวนคู่เสมอ (เพื่อให้การเดินเข้าซอกใด ๆ ในห้องนี้ เมื่อเดินเข้าได้ จะสามารถเดินสวนออกมาได้เสมอ โดยไม่ทับทางเดิม) ดังนั้นเส้นดำ ๆ ที่เห็นในรูปมีความหนา 2 ช่อง ข้อมูลในอาเรย์นี้มีค่าเป็น 0, 1, หรือ 2 โดยที่ 0 แทนที่ว่าง, 1 แทนกำแพงและ 2 แทนทางเดิน (ที่เราต้องเติม)
ให้หาทางเดินเริ่มจากตำแหน่ง (2,2) เดินเลียบกำแพงไปเรื่อย ๆ จนวกกลับมาที่ตำแหน่งตั้งต้น (เปรียบเสมือนการเริ่มต้นที่ (2,2) ใช้มือซ้ายแตะกำแพง หน้าหันไปด้านทิศตะวันออก แล้วเดินไปเรื่อย ๆ โดยมือซ้ายแตะกำแพงไปตลอดการเดินทาง) ดังตัวอย่างในรูปข้างล่างนี้ แสดงทางเดินด้วยสีเทาและเส้นจุดไข่ปลา

ต้องการเขียนคำสั่งเติมทางเดินในเมท็อด
int[][] findPath(DWindow w, int[][] m)
ที่รับอาเรย์ m แทนห้อง และคืนอาเรย์ของห้องนี้ที่ได้จากการเติมทางเดินเลียบกำแพงที่ต้องการ (ด้วยค่า 2 ในอาเรย์ตามทางเดิน) สิ่งที่เขียนให้แล้วในเมท็อด findPath คือวงวนที่เติมทางเดินหนึ่งรอบหนึ่งช่อง (เติมอย่างไร ต้องเขียนเอง) เมื่อเติมทางเดินช่องใหม่ได้แล้ว จะเรียกเมท็อด show(w, m) เพื่อแสดงทางเดินในวินโดว์ จะได้เห็นความก้าวหน้าของการเติมทางเดิน
ข้อแนะนำ : ช่องถัดไป
ของการเดินสามารถหาได้จากช่องปัจจุบัน
และลักษณะของช่องข้าง ๆ (รูป
ที่แสดงคือกำแพง) แบ่งได้เป็น 8 กรณีดังนี้
