コード例 #1
0
        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);
        }
コード例 #2
0
        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;
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        private Posicion Siguiente(Posicion actual, SentidoBusqueda sentido)
        {
            var next = GetPosicion(actual.X + sentido.X, actual.Y + sentido.Y);

            return(next);
        }