在开始之前,我应该先说明我是学生的事实,这是为了一项任务。我需要帮助了解哪些内容出错以及如何修复,但我不想让代码段告诉我该怎么做。
所以,我试图解决一个16块拼图。我使用迭代深化来找到最佳解决方案,并且我正在测试nextConfigs方法以找到拼图可以移动到的位置。
private static LinkedList<Puzzle> nextConfigs(Puzzle start) {
LinkedList<Puzzle> nextPuzzles = new LinkedList<Puzzle>();
Puzzle wlast = start; //creates a copy of 'last'(start) for working with to get up
//System.out.println("Debug 1");
if(wlast.hasUp()){
wlast.moveUp();
nextPuzzles.add(wlast);
System.out.println("Debug 11 " + wlast.toString());
wlast = start; //resets working copy
}
if(wlast.hasRight()){
wlast.moveRight();
nextPuzzles.add(wlast);
System.out.println("Debug 12 " + wlast.toString());
wlast = start; //resets working copy
}
if(wlast.hasDown()){
wlast.moveDown();
nextPuzzles.add(wlast);
System.out.println("Debug 13 " + wlast.toString());
wlast = start; //resets working copy
}
if(wlast.hasLeft()){
wlast.moveLeft();
nextPuzzles.add(wlast);
System.out.println("Debug 14 " + wlast.toString());
wlast = start; //resets working copy
}
System.out.println("Debug 7: next configs contains: " + nextPuzzles.toString());
for(Puzzle next: nextPuzzles){
System.out.println("Debug 7.2 next configs contains " + next.toString());
}
return nextPuzzles;
}
问题是,它返回了一些奇怪的值。使用测试难题_aaabbbbccccdddd,它将以下内容打印到控制台(我用它来帮助调试);
Debug 12 a_aabbbbccccdddd
Debug 13 abaab_bbccccdddd
Debug 14 abaa_bbbccccdddd
Debug 7: next configs contains: [abaa_bbbccccdddd, abaa_bbbccccdddd, abaa_bbbccccdddd]
Debug 7.2 next configs contains abaa_bbbccccdddd
Debug 7.2 next configs contains abaa_bbbccccdddd
Debug 7.2 next configs contains abaa_bbbccccdddd
Puzzle类包含一个包含拼图状态的字符串,以及一个要编辑的字符数组(由toCharArray方法创建)。 hasUp等检查在给定方向上移动是否有效,并向上移动等等,通过编辑数组然后将字符串设置为等于从数组创建的新字符串(puzzle = new String(wpuzzle))。我已经没有办法解决这个问题。
如果有人能看到任何我做错的事情,或者对可能造成这种情况的原因提出建议,我会很感激。我已经测试了hasUp等和Moveup等方法,以确保它们能够正常工作,并且确实可以使用。