public Posicion sonCompatibles(int[][] terreno, int[][] casa) {

		Orientacion orientacion = Orientacion.NORTE;
		Posicion resultado = null;

		// variables auxiliares
		int altoTerreno = terreno.length;
		int anchoTerreno = terreno[0].length;

		int altoCasa = casa.length;
		int anchoCasa = casa[0].length;

		for (int rotaciones = 0; rotaciones < 4; rotaciones++) {

			switch (rotaciones) {
			case 0:
				orientacion = Orientacion.NORTE;
				break;
			case 1:
				orientacion = Orientacion.OESTE;
				break;
			case 2:
				orientacion = Orientacion.SUR;
				break;
			case 3:
				orientacion = Orientacion.ESTE;
				break;
			}
			
			// pruebo para cada posicion de los bordes del terreno

			// borde superior
			int filaTerreno = 0;
			resultado = probarPorFila(filaTerreno, terreno, casa, orientacion);

			// si se pudo ubicar la casa, se deja de buscar
			if (resultado !=  null) {
				return resultado;
			}
			
			// borde superior
			filaTerreno = altoTerreno - altoCasa;
			resultado = probarPorFila(filaTerreno, terreno, casa, orientacion);

			// si se pudo ubicar la casa, se deja de buscar
			if (resultado !=  null) {
				return resultado;
			}
			
			// lateral izquierdo
			int columnaTerreno = 0;
			resultado = probarPorColumna(columnaTerreno, terreno, casa, orientacion);
			
			// si se pudo ubicar la casa, se deja de buscar
			if (resultado !=  null) {
				return resultado;
			}
			
			// lateral derecho
			columnaTerreno = anchoTerreno - anchoCasa;
			resultado = probarPorColumna(columnaTerreno, terreno, casa, orientacion);

			// TODO: Como se podria hacer para evitar la repeticion de este codigo?
			// si se pudo ubicar la casa, se deja de buscar
			if (resultado !=  null) {
				return resultado;
			}

			// casa = rotarIzquierda(casa);
			// TODO: este codigo tiene un error. Quien lo corrige?

		}
		
		return null;
	}