В 15 задаче на игру "2048" не принимает решение по пункту: Метод getMoveEfficiency не должен менять вес плиток в массиве gameTiles и счет.
Прилагаю код двух методов по этой задаче.
public boolean hasBoardChanged(){
int weightGame = 0;
int weightStack = 0;
for (int i = 0; i < gameTiles.length; i++){
for (int j = 0; j < gameTiles[i].length; j++){
weightGame += gameTiles[i][j].value;
}
}
Tile[][] tiles = (Tile[][])previousStates.peek();
for (int i = 0; i < tiles.length; i++){
for (int j = 0; j < tiles[i].length; j++){
weightStack += tiles[i][j].value;
}
}
if (weightGame != weightStack)
return true;
return false;
}
public MoveEfficiency getMoveEfficiency(Move move){
move.move();
if (hasBoardChanged()){
return new MoveEfficiency(getEmptyTiles().size(), score, move );
}
rollback();
return new MoveEfficiency(-1, 0, move);
}