public static long solve(JaggedDungeon d) { int habitacion = 0; for (bool movoeste = true; movoeste == true;) { movoeste = d.GoThruDoor(Direction.WEST); } for (bool movnorte = true; movnorte == true;) { movnorte = d.GoThruDoor(Direction.NORTH); } bool movsur = true; do { for (bool moveste = true; moveste == true;) { moveste = d.GoThruDoor(Direction.EAST); if (moveste == true) { habitacion += 1; } } habitacion += 1; for (bool movoeste = true; movoeste == true;) { movoeste = d.GoThruDoor(Direction.WEST); if (movoeste == false) { movsur = d.GoThruDoor(Direction.SOUTH); } } } while (movsur == true); // TODO: implementar algoritmo para determinar la cantidad total de // habitaciones existentes en el calabozo tipo jagged array // Valor: 4 puntos // Restriccion: la cantidad de movimientos de tu solucion no debe // exceder 4 veces el de mi solucion; ver ejemplo en Main // para comparar tus resultados contra los mios // NOTA: aunque el nombre del metodo, solve, es igual al de la version // rectangular, C# logra distinguir ambas versiones por el tipo // de parametro que recibe cada metodo. Si te molesta, puedes // renombrar estos metodos. // Ejemplo de interaccion: // d.GoThruDoor(Direction.SOUTH); return(habitacion); }
public static long solve(JaggedDungeon d) { // TODO: implementar algoritmo para determinar la cantidad total de // habitaciones existentes en el calabozo tipo jagged array // Valor: 4 puntos // Restriccion: la cantidad de movimientos de tu solucion no debe // exceder 4 veces el de mi solucion; ver ejemplo en Main // para comparar tus resultados contra los mios // NOTA: aunque el nombre del metodo, solve, es igual al de la version // rectangular, C# logra distinguir ambas versiones por el tipo // de parametro que recibe cada metodo. Si te molesta, puedes // renombrar estos metodos. // Ejemplo de interaccion: // d.GoThruDoor(Direction.SOUTH); int CountRows() { int tmp = 1; while (d.GoThruDoor(Direction.EAST)) { ; } while (d.GoThruDoor(Direction.WEST)) { tmp++; } return(tmp); } int Cols = 1; int Rows = 0; while (d.GoThruDoor(Direction.WEST)) { ; } while (!d.GoThruDoor(Direction.NORTH) && !d.GoThruDoor(Direction.SOUTH)) { d.GoThruDoor(Direction.WEST); } while (d.GoThruDoor(Direction.NORTH)) { ; } Rows += CountRows(); for (int i = 0; i < Cols; i++) { if (d.GoThruDoor(Direction.SOUTH)) { Rows += CountRows(); Cols++; } } return(Rows); }