private CoordenadasObjetoBuscado BuscarTodoAlRededor(Posicion actual, T[] loQueBusco) { CoordenadasObjetoBuscado coordBuscadas = null; foreach (var sentido in sentidosDeBusqueda) { coordBuscadas = BuscarTodoEnElSentido(actual, loQueBusco, sentido); if (coordBuscadas.encontrados) { break; } } return(coordBuscadas); }
public Matriz(IEnumerable <IEnumerable <T> > lobj) { matriz = new Posicion[lobj.Count()][]; for (int y = 0; y < lobj.Count(); y++) { matriz[y] = new Posicion[lobj.ElementAt(y).Count()]; for (int x = 0; x < lobj.ElementAt(y).Count(); x++) { matriz[y][x] = new Posicion(x + 1, y + 1, lobj.ElementAt(y).ElementAt(x)); } } alto = matriz.Length; ancho = matriz[0].Length; }
private CoordenadasObjetoBuscado BuscarTodoEnElSentido(Posicion posicionInicial, T[] loQueBusco, SentidoBusqueda sentido) { CoordenadasObjetoBuscado res = new CoordenadasObjetoBuscado(loQueBusco); Posicion posActual = posicionInicial; for (int i = 0; i < loQueBusco.Length; i++) { if (posActual.elem != null && posActual.elem.Equals(loQueBusco[i])) { res.posiciones[i] = posActual; } else { res.encontrados = false; break; } posActual = Siguiente(posActual, sentido); } return(res); }
private Posicion Siguiente(Posicion actual, SentidoBusqueda sentido) { var next = GetPosicion(actual.X + sentido.X, actual.Y + sentido.Y); return(next); }