Ejemplo n.º 1
0
        public NResult <EItemInfo> GetAvaliableItem(QItem qItem)
        {
            NResult <EItemInfo> result = new NResult <EItemInfo>();

            try
            {
                using (OOContent db = new OOContent())
                {
                    var list = db.DBItemInfo.Where(a => a.RecordStatus == RecordStatus.Normal).OrderByDescending(a => a.CreatedTime);

                    if (qItem.pageIndex == 0)
                    {
                        result.resultList = list.Take(qItem.pageSize).ToList();
                    }
                    else
                    {
                        result.resultList = list.Skip(qItem.pageIndex * qItem.pageSize).Take(qItem.pageSize).ToList();
                    }
                }
            }
            catch (Exception ex)
            {
                result.IsSuccess = false;
                result.ErrorMsg  = ex.Message;
            }
            return(result);
        }
Ejemplo n.º 2
0
 public QItem(int _x, int _y, int _distance, QItem _last_item)
 {
     this.position.X = _x;
     this.position.Y = _y;
     this.distance   = _distance;
     this.last_item  = _last_item;
 }
Ejemplo n.º 3
0
        // /////

        private void buttonPesquisar_Click(object sender, EventArgs e)
        {
            try
            {
                dataGridViewResultado.Rows.Clear();

                QItem queryCodigo = new QItem(null, null);
                //QItem queryEmpresaNome = new QItem(null, null);
                QItem queryClienteNome = new QItem(null, null);

                //codigo
                if (this.textBoxCodigo.Text != "")
                {
                    queryCodigo = new QItem("c.id", this.textBoxCodigo.Text);
                }
                else
                {
                    queryCodigo = new QItem(null, null);
                }

                //cliente
                if (this.textBoxClienteNome.Text != "")
                {
                    queryClienteNome = new QItem("c.nome LIKE %%", this.textBoxClienteNome.Text);
                }
                else
                {
                    queryClienteNome = new QItem(null, null);
                }

                //empresa
                //if (this.textBoxEmpresaNome.Text != "")
                //    queryClienteNome = new QItem("e.nome LIKE %%", this.textBoxEmpresaNome.Text);
                //else
                //    queryClienteNome = new QItem(null, null);



                List <Library.Cliente> clientes = Library.ClienteBD.FindAdvanced(queryCodigo, queryClienteNome);//, queryEmpresaNome);



                if (clientes != null)
                {
                    foreach (Library.Cliente c in clientes)
                    {
                        /*string status = "";
                         * if (c.Notificacao != 0)
                         * {
                         *  status = "Notificação " + c.Notificacao;
                         * }*/
                        dataGridViewResultado.Rows.Add(c.Id, c.Nome, "");//status);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
Ejemplo n.º 4
0
        public async Task <IHttpActionResult> Remove([FromBody] QItem p)
        {
            var r  = new ResultBase();
            var id = p.id;

            using (db0 = new Bpple_DBEntities())
            {
                try
                {
                    var md = await db0.Member.FindAsync(id);

                    var entry = db0.Entry <Member>(md);
                    entry.State = EntityState.Deleted;
                    await db0.SaveChangesAsync();

                    r.state = 0;
                }
                catch (Exception ex)
                {
                    r.state   = 999;
                    r.message = ex.Message;
                }
                return(Ok(r));
            }
        }
Ejemplo n.º 5
0
 public QElem(QItem data)
 {
     foreach (var x in data.toArray())
     {
         PropertyInfo prop = this.GetType().GetProperty(x.Key, BindingFlags.Public | BindingFlags.Instance);
         if (null != prop && prop.CanWrite)
         {
             prop.SetValue(this, x.Value, null);
         }
     }
 }
Ejemplo n.º 6
0
        public SupplierTenderQuantityTable SaveQuantityTableItems(long tableId, List <TenderQuantityItemDTO> lst, string tableName, long currentItemId, out long itemId)
        {
            itemId = 0;
            Name   = tableName;
            if (QuantitiyItemsJson == null)
            {
                QuantitiyItemsJson = new SupplierTenderQuantityTableItemJson();
                QuantitiyItemsJson.Create();
            }
            bool ItemExists = QuantitiyItemsJson.SupplierTenderQuantityTableItems != null && QuantitiyItemsJson.SupplierTenderQuantityTableItems.Any(a => /*a.IsActive == true && a.SupplierTenderQuantityTableId == tableId && */ a.ItemNumber == currentItemId);
            var  lastIndex  = QuantitiyItemsJson.SupplierTenderQuantityTableItems.Any() ? QuantitiyItemsJson.SupplierTenderQuantityTableItems.OrderByDescending(t => t.ItemNumber).FirstOrDefault().ItemNumber : 0;

            foreach (var item in lst)
            {
                if (!ItemExists)
                {
                    byte[] gb      = Guid.NewGuid().ToByteArray();
                    long   IId     = BitConverter.ToInt64(gb, 0);
                    var    idExsit = QuantitiyItemsJson.SupplierTenderQuantityTableItems.Any(x => x.Id == IId);
                    while (idExsit)
                    {
                        gb      = Guid.NewGuid().ToByteArray();
                        IId     = BitConverter.ToInt64(gb, 0);
                        idExsit = QuantitiyItemsJson.SupplierTenderQuantityTableItems.Any(x => x.Id == IId);
                    }
                    QuantitiyItemsJson.SupplierTenderQuantityTableItems.Add(new SupplierTenderQuantityTableItem(IId, item.ColumnId, item.TenderFormHeaderId, item.TemplateId, item.Value, lastIndex + 1));
                    itemId = lastIndex + 1;
                }
                else
                {
                    SupplierTenderQuantityTableItem QItem;
                    if (item.Id != 0)
                    {
                        QItem = QuantitiyItemsJson.SupplierTenderQuantityTableItems.FirstOrDefault(q => q.Id == item.Id);
                    }
                    else
                    {
                        QItem = QuantitiyItemsJson.SupplierTenderQuantityTableItems.FirstOrDefault(q => q.ItemNumber == item.ItemNumber && q.ColumnId == item.ColumnId && q.TenderFormHeaderId == item.TenderFormHeaderId);
                    }
                    QItem.UpdateItems(item.ColumnId, item.TenderFormHeaderId, item.TemplateId, item.Value, currentItemId);
                }
            }
            if (tableId == 0)
            {
                EntityCreated();
                QuantitiyItemsJson.Create();
            }
            else
            {
                EntityUpdated();
                QuantitiyItemsJson.Update();
            }
            return(this);
        }
Ejemplo n.º 7
0
        public TenderQuantityTableChanges SaveQuantityTableItems(long tableId, List <TenderQuantityItemDTO> lst, long currentItemId, out long itemId)
        {
            itemId = 0;
            bool ItemExists = QuantitiyItemsChangeJson != null && QuantitiyItemsChangeJson.TenderQuantityTableItemChanges != null && QuantitiyItemsChangeJson.TenderQuantityTableItemChanges.Any(a => /*a.IsActive == true && a.TenderQuantityTableChangesId == tableId &&*/ a.ItemNumber == currentItemId);
            var  lastIndex  = QuantitiyItemsChangeJson.TenderQuantityTableItemChanges /*.Where(a => a.IsActive == true && a.TenderQuantityTableChangesId == tableId)*/.Any() ? QuantitiyItemsChangeJson.TenderQuantityTableItemChanges/*.Where(a => a.IsActive == true && a.TenderQuantityTableChangesId == tableId)*/
                              .Max(a => a.ItemNumber) : 0;

            foreach (var item in lst)
            {
                byte[] gb      = Guid.NewGuid().ToByteArray();
                long   IId     = BitConverter.ToInt64(gb, 0);
                var    idExsit = QuantitiyItemsChangeJson.TenderQuantityTableItemChanges.Any(x => x.Id == IId);
                while (idExsit)
                {
                    gb      = Guid.NewGuid().ToByteArray();
                    IId     = BitConverter.ToInt64(gb, 0);
                    idExsit = QuantitiyItemsChangeJson.TenderQuantityTableItemChanges.Any(x => x.Id == IId);
                }
                if (!ItemExists)
                {
                    QuantitiyItemsChangeJson.TenderQuantityTableItemChanges.Add(new TenderQuantityTableItemChanges(IId, item.ColumnId, item.TenderFormHeaderId, item.TemplateId, item.ColumnName, item.Value, lastIndex + 1));
                    itemId = lastIndex + 1;
                }
                else
                {
                    TenderQuantityTableItemChanges QItem;
                    if (item.Id != 0)
                    {
                        QItem = QuantitiyItemsChangeJson.TenderQuantityTableItemChanges.FirstOrDefault(q => q.Id == item.Id);
                    }
                    else
                    {
                        QItem = QuantitiyItemsChangeJson.TenderQuantityTableItemChanges.FirstOrDefault(q => q.ItemNumber == item.ItemNumber && q.ColumnId == item.ColumnId && q.TenderFormHeaderId == item.TenderFormHeaderId);
                    }
                    if (QItem != null)
                    {
                        QItem.UpdateItems(item.ColumnId, item.TenderFormHeaderId, item.TemplateId, item.ColumnName, item.Value, currentItemId);
                    }
                }
            }
            if (tableId == 0)
            {
                EntityCreated();
                QuantitiyItemsChangeJson.SetAddedState();
            }
            else
            {
                EntityUpdated();
                QuantitiyItemsChangeJson.SetUpdateState();
            }
            return(this);
        }
Ejemplo n.º 8
0
        public async Task <IHttpActionResult> Get([FromUri] QItem p)
        {
            var r  = new ResultData <Member>();
            var id = p.id;

            using (db0 = new Bpple_DBEntities())
            {
                var item = await db0.Member.FindAsync(id);

                r.state = 0;
                r.data  = item;
                r.exist = item != null;
                return(Ok(r));
            }
        }
Ejemplo n.º 9
0
        public void Pesquisar()
        {
            if ((comboBoxEmpresa.SelectedIndex != -1) & (comboBoxCliente.SelectedIndex != -1))
            {
                Library.Empresa empresa = (Library.Empresa)comboBoxEmpresa.SelectedItem;
                Library.Cliente cliente = (Library.Cliente)comboBoxCliente.SelectedItem;



                QItem queryData1 = new QItem(null, null);
                QItem queryData2 = new QItem(null, null);

                //dataEntrega
                if (empresa != null)
                {
                    queryData1 = new QItem("e.id", empresa.Id);
                }
                else
                {
                    queryData1 = new QItem(null, null);
                }

                if (cliente != null)
                {
                    queryData2 = new QItem("c.id", cliente.Id);
                }
                else
                {
                    queryData2 = new QItem(null, null);
                }



                List <Library.TermoCompromisso> termos = Library.TermoCompromissoBD.FindAdvanced(queryData1, queryData2);

                if (termos != null)
                {
                    this.dataGridViewTermos.Rows.Clear();
                    this.dataGridViewParcelas.Rows.Clear();

                    foreach (Library.TermoCompromisso tc in termos)
                    {
                        this.dataGridViewTermos.Rows.Add(tc.Id, tc.Cliente.Nome, tc.Empresa.Nome, tc.Data);
                    }
                }
            }
        }
Ejemplo n.º 10
0
            // This method prints nodes in top view of binary tree
            public void printTopView()
            {
                // base case
                if (root == null)
                {
                    return;
                }

                // Creates an empty hashset
                HashSet <int> set = new HashSet <int>();

                // Create a queue and add root to it
                Queue <QItem> Q = new Queue <QItem>();

                Q.Enqueue(new QItem(root, 0)); // Horizontal distance of root is 0

                // Standard BFS or level order traversal loop
                while (Q.Count != 0)
                {
                    // Remove the front item and get its details
                    QItem    qi = Q.Dequeue();
                    int      hd = qi.hd;
                    TreeNode n  = qi.node;

                    // If this is the first node at its horizontal distance,
                    // then this node is in top view
                    if (!set.Contains(hd))
                    {
                        set.Add(hd);
                        Console.WriteLine(n.key + " ");
                    }

                    // Enqueue left and right children of current node
                    if (n.left != null)
                    {
                        Q.Enqueue(new QItem(n.left, hd - 1));
                    }
                    if (n.right != null)
                    {
                        Q.Enqueue(new QItem(n.right, hd + 1));
                    }
                }
            }
Ejemplo n.º 11
0
        private void c_Click(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;
            //
            resultadoDGV.Rows.Clear();

            QItem queryCodigo      = new QItem(null, null);
            QItem queryClienteNome = new QItem(null, null);

            //codigo
            if (this.codigoTB.Text != "")
            {
                queryCodigo = new QItem("v.id", this.codigoTB.Text);
            }
            else
            {
                queryCodigo = new QItem(null, null);
            }

            //cliente
            if (this.clienteNomeTB.Text != "")
            {
                queryClienteNome = new QItem("c.nome LIKE %%", this.clienteNomeTB.Text);
            }
            else
            {
                queryClienteNome = new QItem(null, null);
            }

            List <Library.Cliente> clientes = Library.ClienteBD.FindAdvanced(queryCodigo, queryClienteNome);

            if (clientes != null)
            {
                foreach (Library.Cliente c in clientes)
                {
                    resultadoDGV.Rows.Add(c.Id, c.Nome);
                }
            }

            //
            this.Cursor = Cursors.Default;
        }
Ejemplo n.º 12
0
        //64 https://leetcode.com/problems/minimum-path-sum/
        public int MinPathSumTimesOut(int[][] grid)
        {
            if (grid == null)
            {
                throw new ArgumentNullException(nameof(grid));
            }
            int n = grid.Length;

            var min = int.MaxValue;

            QItem         start = new QItem(0, 0, grid[0][0]);
            Queue <QItem> q     = new Queue <QItem>();

            q.Enqueue(start);

            while (q.Count > 0)
            {
                var current   = q.Dequeue();
                var rowLength = grid[current.Row].Length;
                if (current.Row + 1 == n && current.Col + 1 == rowLength)
                {
                    min = Math.Min(min, current.Sum);
                }

                //down
                if (current.Row + 1 < n)
                {
                    q.Enqueue(new QItem(current.Row + 1, current.Col, current.Sum + grid[current.Row + 1][current.Col]));
                }
                //right

                if (current.Col + 1 < rowLength)
                {
                    q.Enqueue(new QItem(current.Row, current.Col + 1, current.Sum + grid[current.Row][current.Col + 1]));
                }
            }
            return(min);
        }
Ejemplo n.º 13
0
        //返回从start到target的最短链
        public int shortestChainLen(String start, String target, List <String> D)
        {
            Queue <QItem> Q    = new Queue <QItem>();
            QItem         item = new QItem(start, 1);

            Q.Enqueue(item);    //把第一个字符串添加进来


            while (Q.Count > 0)
            {
                QItem curr = Q.Peek();
                Q.Dequeue();

                for (int i = D.Count - 1; i >= 0; i--)
                {
                    String temp = D[i];
                    //如果这两个字符串只有一个字符不同
                    if (IsAdjacent(curr.word, temp))
                    {
                        item.word = temp;
                        item.Len  = curr.Len + 1;
                        Q.Enqueue(item);    //把这个字符串放入到队列中

                        //把这个字符串从队列中删除来避免被重复遍历
                        D.Remove(D[i]);

                        //通过转变后得到了目标字符
                        if (temp == target)
                        {
                            return(item.Len);
                        }
                    }
                }
            }
            return(0);
        }
Ejemplo n.º 14
0
        private void pesquisarButton_Click(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;
            //
            resultadoDGV.Rows.Clear();

            QItem queryData1 = new QItem(null, null);
            QItem queryData2 = new QItem(null, null);

            QItem queryCodigo      = new QItem(null, null);
            QItem queryClienteNome = new QItem(null, null);

            //dataEntrega
            if (this.dataInicioDTP.Text != "")
            {
                queryData1 = new QItem("dataMenor", this.dataInicioDTP.Value.ToString("yyyy-MM-dd"));
            }
            else
            {
                queryData1 = new QItem(null, null);
            }

            if (this.dataTerminoDTP.Text != "")
            {
                queryData2 = new QItem("dataMaior", this.dataTerminoDTP.Value.ToString("yyyy-MM-dd"));
            }
            else
            {
                queryData2 = new QItem(null, null);
            }

            //codigo
            if (this.codigoTB.Text != "")
            {
                queryCodigo = new QItem("o.id", this.codigoTB.Text);
            }
            else
            {
                queryCodigo = new QItem(null, null);
            }

            //cliente
            if (this.clienteNomeTB.Text != "")
            {
                queryClienteNome = new QItem("c.nome LIKE %%", this.clienteNomeTB.Text);
            }
            else
            {
                queryClienteNome = new QItem(null, null);
            }


            List <Library.Condicional> condicionals = Library.CondicionalBD.FindAdvanced(queryData1, queryData2, queryCodigo, queryClienteNome);

            if (condicionals != null)
            {
                foreach (Library.Condicional o in condicionals)
                {
                    resultadoDGV.Rows.Add(o.Id, o.Cliente.Nome, o.Data);
                }
            }

            this.Cursor = Cursors.Default;
        }
Ejemplo n.º 15
0
            public string Paso(int[,] grid, int ff, int cc)
            {
                bool visualizarAnalisis = false;

                QItem source = new QItem(0, 0, 0, 0, "");

                source.row = ff;
                source.col = cc;

                //  applying BFS on matrix cells starting from source
                Queue <QItem> queue = new Queue <QItem>();

                queue.Enqueue(new QItem(source.row, source.col, 0, grid[source.row, source.col], "Ini"));
                if (visualizarAnalisis)
                {
                    Console.WriteLine("Agrega a la cola: " + grid[source.row, source.col]);
                }

                bool[,] visited = new bool[grid.GetLength(0), grid.GetLength(1)];
                visited[source.row, source.col] = true;

                int pasoAnterior = grid[source.row, source.col];

                while (queue.Count > 0)
                {
                    QItem p = queue.Dequeue();
                    if (visualizarAnalisis)
                    {
                        Console.WriteLine("Quita de la cola: " + grid[p.row, p.col] + "(" + p.row + "," + p.col + ") > pasoAnterior: " + p.pasoAnterior + " > " + p.value.ToString());
                    }


                    //  moving up
                    if (isValid((p.row - 1), p.col, grid, visited, p.row, p.col))
                    {
                        queue.Enqueue(new QItem((p.row - 1), p.col, (p.dist + 1), grid[(p.row - 1), p.col], p.pasoAnterior + " > " + p.value.ToString()));
                        visited[(p.row - 1), p.col] = true;
                        if (visualizarAnalisis)
                        {
                            Console.WriteLine("Agrega a la cola: " + grid[(p.row - 1), p.col]);
                        }
                    }

                    //  moving down
                    if (isValid((p.row + 1), p.col, grid, visited, p.row, p.col))
                    {
                        queue.Enqueue(new QItem((p.row + 1), p.col, (p.dist + 1), grid[(p.row + 1), p.col], p.pasoAnterior + " > " + p.value.ToString()));
                        visited[(p.row + 1), p.col] = true;
                        if (visualizarAnalisis)
                        {
                            Console.WriteLine("Agrega a la cola: " + grid[(p.row + 1), p.col]);
                        }
                    }

                    //  moving left
                    if (isValid(p.row, (p.col - 1), grid, visited, p.row, p.col))
                    {
                        queue.Enqueue(new QItem(p.row, (p.col - 1), (p.dist + 1), grid[p.row, (p.col - 1)], p.pasoAnterior + " > " + p.value.ToString()));
                        visited[p.row, (p.col - 1)] = true;
                        if (visualizarAnalisis)
                        {
                            Console.WriteLine("Agrega a la cola: " + grid[p.row, (p.col - 1)]);
                        }
                    }

                    //  moving right
                    if (isValid((p.row), (p.col + 1), grid, visited, p.row, p.col))
                    {
                        queue.Enqueue(new QItem(p.row, (p.col + 1), (p.dist + 1), grid[p.row, (p.col + 1)], p.pasoAnterior + " > " + p.value.ToString()));
                        visited[p.row, (p.col + 1)] = true;
                        if (visualizarAnalisis)
                        {
                            Console.WriteLine("Agrega a la cola: " + grid[p.row, (p.col + 1)]);
                        }
                    }

                    if (queue.Count < 1)
                    {
                        string p1 = (p.dist.ToString() + " pasos para este camino: " + p.pasoAnterior + " > " + p.value.ToString());
                        return(p1);
                    }
                }

                return("-1");
            }
Ejemplo n.º 16
0
        // Returns a list of Qitems with the positions of each node of the shortest path
        public List <Position> FindPath(int[,] _matrix, Position _start, Position _destination, int _flight_value) //flight_value is used if we want entities to fly, be ghosts...
        {
            Queue <QItem> queue     = new Queue <QItem>();
            int           n_rows    = _matrix.GetLength(0);
            int           n_columns = _matrix.GetLength(1);

            bool[,] visited = new bool[n_rows, n_columns];


            // Initialize working grid
            for (int i = 0; i < n_rows; i++)
            {
                for (int j = 0; j < n_columns; j++)
                {
                    if (_flight_value <= _matrix[i, j])
                    {
                        visited[i, j] = true;
                    }
                    else
                    {
                        visited[i, j] = false;
                    }
                }
            }

            // Check for an invalid destination
            if (!IsValidPosition(_destination, n_rows, n_columns, visited))
            {
                return(null);
            }

            Position[] directions = new Position[4];
            // Left
            directions[0] = new Position(0, -1);
            // Up
            directions[1] = new Position(1, 0);
            // Right
            directions[2] = new Position(0, 1);
            // Down
            directions[3] = new Position(-1, 0);

            // Start the search
            queue.Enqueue(new QItem(_start.X, _start.Y, 0, null));
            visited[_start.X, _start.Y] = true;
            Position temp_pos = new Position(-1, -1);  // Used to loop through multiple positions

            while (queue.Count() > 0)
            {
                QItem p = queue.Dequeue();

                // We found the path to exit
                if (p.position.X == _destination.X && p.position.Y == _destination.Y)
                {
                    // Create the array for the path
                    List <Position> shortest_path = new List <Position>();
                    QItem           temp_qitem    = p;

                    while (temp_qitem.last_item != null)
                    {
                        shortest_path.Add(temp_qitem.position);
                        temp_qitem = temp_qitem.last_item;
                    }

                    return(shortest_path);
                }

                // Try for next cell in all directions:
                for (int k = 0; k < 4; k++)
                {
                    temp_pos.X = p.position.X + directions[k].X;
                    temp_pos.Y = p.position.Y + directions[k].Y;
                    if (IsValidPosition(temp_pos, n_rows, n_columns, visited))
                    {
                        queue.Enqueue(new QItem(temp_pos.X, temp_pos.Y, p.distance + 1, p));
                        visited[temp_pos.X, temp_pos.Y] = true;
                    }
                }
            }

            return(null);
        }
        public static int minDistence(int[,] grid)
        {
            // M and N
            int height = grid.GetUpperBound(0) + 1;
            int width  = grid.GetUpperBound(1) + 1;

            // Source
            QItem source = new QItem(0, 0, 0);

            // Visited array
            bool[,] visited = new bool[height, width];


            // Init visited array and source
            for (int i = 0; i < height; i++)
            {
                for (int j = 0; j < width; j++)
                {
                    // Set to true for not possible to visit cells
                    if (grid[i, j] == 0)
                    {
                        visited[i, j] = true;
                    }

                    // Finding source
                    if (grid[i, j] == 2)
                    {
                        source.row = i;
                        source.col = j;
                    }
                }
            }

            // ---------------BFS------------

            Queue <QItem> queue = new Queue <QItem>();

            queue.Enqueue(source);
            visited[source.row, source.col] = true;

            while (queue.Count > 0)
            {
                var item = queue.Dequeue();

                if (grid[item.row, item.col] == 9)
                {
                    return(item.dist);
                }

                // Up
                if (item.row - 1 >= 0 && visited[item.row - 1, item.col] == false)
                {
                    var nextUp = new QItem(item.row - 1, item.col, item.dist + 1);
                    queue.Enqueue(nextUp);
                    visited[item.row - 1, item.col] = true;
                }

                // Down
                if (item.row + 1 < height && visited[item.row + 1, item.col] == false)
                {
                    var nextDown = new QItem(item.row + 1, item.col, item.dist + 1);
                    queue.Enqueue(nextDown);
                    visited[item.row + 1, item.col] = true;
                }

                // Left
                if (item.col - 1 >= 0 && visited[item.row, item.col - 1] == false)
                {
                    var nextLeft = new QItem(item.row, item.col - 1, item.dist + 1);
                    queue.Enqueue(nextLeft);
                    visited[item.row, item.col - 1] = true;
                }


                // Right
                if (item.col + 1 < width && visited[item.row, item.col + 1] == false)
                {
                    var nextRight = new QItem(item.row, item.col + 1, item.dist + 1);
                    queue.Enqueue(nextRight);
                    visited[item.row, item.col + 1] = true;
                }
            }

            return(-1);
        }
Ejemplo n.º 18
0
        //Leet 1091 https://leetcode.com/problems/shortest-path-in-binary-matrix/
        //BFS
        //all moves array
        //set grid cell to visited after queuing it
        public int ShortestPathBinaryMatrix(int[][] grid)
        {
            if (grid == null)
            {
                throw new ArgumentNullException(nameof(grid));
            }
            int n      = grid.Length;
            var result = -1;

            if (n == 0 || grid[0][0] != 0 || grid[n - 1][n - 1] != 0)
            {
                return(result);
            }

            var source = new QItem(0, 0, 1);
            var moves  = new int[8][] { new int[2] {
                                            0, 1
                                        }, new int[2] {
                                            0, -1
                                        }, new int[2] {
                                            1, 0
                                        }, new int[2] {
                                            -1, 0
                                        },
                                        new int[2] {
                                            -1, -1
                                        }, new int[2] {
                                            1, -1
                                        }, new int[2] {
                                            1, 1
                                        }, new int[2] {
                                            -1, 1
                                        } };
            Func <int[], bool> ValidMove = current => current[0] > -1 && current[0] < n &&
                                           current[1] > -1 && current[1] < n &&
                                           grid[current[0]][current[1]] == 0;


            var q = new Queue <QItem>();

            q.Enqueue(source);
            var min = int.MaxValue;

            while (q.Count > 0)
            {
                var current = q.Dequeue();
                if (current.Row == n - 1 && current.Col == n - 1)
                {
                    min = Math.Min(min, current.Total);
                }
                else
                {
                    foreach (var move in moves)
                    {
                        var newmove = new int[2] {
                            current.Row + move[0], current.Col + move[1]
                        };
                        if (ValidMove(newmove))
                        {
                            q.Enqueue(new QItem(newmove[0], newmove[1], current.Total + 1));
                            grid[newmove[0]][newmove[1]] = 1;
                        }
                    }
                }
            }
            if (min != int.MaxValue)
            {
                result = min;
            }
            return(result);
        }
Ejemplo n.º 19
0
            public int minDistance(int[,] grid, int ff, int cc)
            {
                QItem source = new QItem(0, 0, 0);

                //  To keep track of visited QItems. Marking
                //  blocked cells as visited.

                //for (int i = 0; (i < grid.GetLength(0)); i++)
                //{
                //    for (int j = 0; (j < grid.GetLength(1)); j++)
                //    {
                //        //  Finding source

                //        if (grid[i, j] == 115)
                //        {
                //            source.row = i;
                //            source.col = j;
                source.row = ff;
                source.col = cc;
                //            break;

                //        }

                //    }

                //}

                //  applying BFS on matrix cells starting from source
                Queue <QItem> queue = new Queue <QItem>();

                queue.Enqueue(new QItem(source.row, source.col, 0));
                bool[,] visited = new bool[grid.GetLength(0), grid.GetLength(1)];

                visited[source.row, source.col] = true;
                while ((queue.Count > 0))
                {
                    QItem p = queue.Dequeue();
                    //  Destination found;
                    if ((grid[p.row, p.col] == 100))
                    {
                        return(p.dist);
                    }

                    //  moving up
                    if (isValid((p.row - 1), p.col, grid, visited, p.row, p.col))
                    {
                        queue.Enqueue(new QItem((p.row - 1), p.col, (p.dist + 1)));
                        visited[(p.row - 1), p.col] = true;
                    }

                    //  moving down
                    if (isValid((p.row + 1), p.col, grid, visited, p.row, p.col))
                    {
                        queue.Enqueue(new QItem((p.row + 1), p.col, (p.dist + 1)));
                        visited[(p.row + 1), p.col] = true;
                    }

                    //  moving left
                    if (isValid(p.row, (p.col - 1), grid, visited, p.row, p.col))
                    {
                        queue.Enqueue(new QItem(p.row, (p.col - 1), (p.dist + 1)));
                        visited[p.row, (p.col - 1)] = true;
                    }

                    //  moving right
                    if (isValid((p.row - 1), (p.col + 1), grid, visited, p.row, p.col))
                    {
                        queue.Enqueue(new QItem(p.row, (p.col + 1), (p.dist + 1)));
                        visited[p.row, (p.col + 1)] = true;
                    }
                }

                return(-1);
            }
Ejemplo n.º 20
0
        // Complete the findShortestRoute function below.
        public int findShortestRoute(string grid)
        {
            var rowCount = 0;
            var colCount = 0;
            var matrix   = getMatrixGrid(grid, ref rowCount, ref colCount);

            var source  = new QItem(0, 0, 0);
            var visited = new bool[rowCount, colCount];

            for (var i = 0; i < rowCount; i++)
            {
                for (var j = 0; j < colCount; j++)
                {
                    if (matrix[i, j] == "X")
                    {
                        visited[i, j] = true;
                    }
                    else
                    {
                        visited[i, j] = false;
                    }

                    if (matrix[i, j] == "O")
                    {
                        source.r = i;
                        source.c = j;
                    }
                }
            }
            var queue = new Queue <QItem>();

            queue.Enqueue(source);
            visited[source.r, source.c] = true;
            while (queue.Count != 0)
            {
                QItem pQueue = queue.Peek();
                queue.Dequeue();
                if (matrix[pQueue.r, pQueue.c] == "T")
                {
                    return(pQueue.dist);
                }
                if (pQueue.r - 1 >= 0 && visited[pQueue.r - 1, pQueue.c] == false)
                {
                    queue.Enqueue(new QItem(pQueue.r - 1, pQueue.c, pQueue.dist + 1));
                    visited[pQueue.r - 1, pQueue.c] = true;
                }
                if (pQueue.r + 1 < rowCount && visited[pQueue.r + 1, pQueue.c] == false)
                {
                    queue.Enqueue(new QItem(pQueue.r + 1, pQueue.c, pQueue.dist + 1));
                    visited[pQueue.r + 1, pQueue.c] = true;
                }
                if (pQueue.c - 1 >= 0 && visited[pQueue.r, pQueue.c - 1] == false)
                {
                    queue.Enqueue(new QItem(pQueue.r, pQueue.c - 1, pQueue.dist + 1));
                    visited[pQueue.r, pQueue.c - 1] = true;
                }
                if (pQueue.c + 1 < colCount && visited[pQueue.r, pQueue.c + 1] == false)
                {
                    queue.Enqueue(new QItem(pQueue.r, pQueue.c + 1, pQueue.dist + 1));
                    visited[pQueue.r, pQueue.c + 1] = true;
                }
            }

            return(-1);
        }
Ejemplo n.º 21
0
        private void pesquisarButton_Click(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;
            //
            resultadoDGV.Rows.Clear();

            QItem queryData1 = new QItem(null, null);
            QItem queryData2 = new QItem(null, null);

            QItem queryCodigo      = new QItem(null, null);
            QItem queryClienteNome = new QItem(null, null);

            QItem queryFormaPagamento = new QItem(null, null);

            //dataEntrega
            if (this.dataInicioDTP.Text != "")
            {
                queryData1 = new QItem("dataMenor", this.dataInicioDTP.Value.ToString("yyyy-MM-dd"));
            }
            else
            {
                queryData1 = new QItem(null, null);
            }

            if (this.dataTerminoDTP.Text != "")
            {
                queryData2 = new QItem("dataMaior", this.dataTerminoDTP.Value.ToString("yyyy-MM-dd"));
            }
            else
            {
                queryData2 = new QItem(null, null);
            }

            //codigo
            if (this.codigoTB.Text != "")
            {
                queryCodigo = new QItem("v.id", this.codigoTB.Text);
            }
            else
            {
                queryCodigo = new QItem(null, null);
            }

            //cliente
            if (this.clienteNomeTB.Text != "")
            {
                queryClienteNome = new QItem("c.nome LIKE %%", this.clienteNomeTB.Text);
            }
            else
            {
                queryClienteNome = new QItem(null, null);
            }

            //formaPagamento
            if (this.avistaRB.Checked == true)
            {
                queryFormaPagamento = new QItem("v.formaPagamento", "avista");
            }
            if (this.chequeRB.Checked == true)
            {
                queryFormaPagamento = new QItem("v.formaPagamento", "cheque");
            }
            if (this.cartaoRB.Checked == true)
            {
                queryFormaPagamento = new QItem("v.formaPagamento", "cartao");
            }
            if (this.aprazoRB.Checked == true)
            {
                queryFormaPagamento = new QItem("v.formaPagamento", "aprazo");
            }
            if (this.noFormaPagamentoRB.Checked == true)
            {
                queryFormaPagamento = new QItem(null, null);
            }

            List <Library.Venda> vendas = Library.VendaBD.FindAdvanced(queryData1, queryData2, queryCodigo, queryClienteNome, queryFormaPagamento);

            if (vendas != null)
            {
                foreach (Library.Venda v in vendas)
                {
                    string fp = "";

                    if (v.FormaPagamento == "avista")
                    {
                        fp = "À vista";
                    }
                    if (v.FormaPagamento == "aprazo")
                    {
                        fp = "À prazo";
                    }
                    if (v.FormaPagamento == "cartao")
                    {
                        fp = "Cartão";
                    }
                    if (v.FormaPagamento == "cheque")
                    {
                        fp = "Cheque";
                    }

                    resultadoDGV.Rows.Add(v.Id, v.Cliente.Nome, fp, v.Data);
                }
            }

            //
            this.Cursor = Cursors.Default;
        }
Ejemplo n.º 22
0
        //https://www.geeksforgeeks.org/shortest-distance-two-cells-matrix-grid/
        //This is not a CTCI question but what the heck.
        //Can only think of 1 way.
        //For loops
        public int MinDistance(char[][] matrix)
        {
            if (matrix == null)
            {
                throw new ArgumentNullException(nameof(matrix));
            }
            if (matrix.Length == 0)
            {
                return(-1);
            }
            var   result  = -1;
            QItem source  = null;
            var   n       = matrix.Length;
            var   m       = matrix[0].Length;
            var   visited = new bool[n, m];

            for (int i = 0; i < matrix.Length; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    var cell = matrix[i][j];
                    if (cell == 's' || cell == '0')
                    {
                        visited[i, j] = true;
                        if (cell == 's')
                        {
                            source = new QItem(i, j, 0);
                        }
                    }
                }
            }
            if (source != null)
            {
                var allowedMoves = new int[4][] { new int[] { 0, -1 }, new int[] { 0, 1 }, new int[] { -1, 0 }, new int[] { 1, 0 } };

                Queue <QItem> q   = new Queue <QItem>(new QItem[] { source });
                var           min = int.MaxValue;

                while (q.Count > 0)
                {
                    var current = q.Dequeue();
                    if (matrix[current.Row][current.Col] == 'd')
                    {
                        min = Math.Min(min, current.Total);
                    }
                    else
                    {
                        foreach (var move in allowedMoves)
                        {
                            var newMove = new int[] { current.Row + move[0], current.Col + move[1] };
                            if ((newMove[0] > -1 && newMove[0] < n) &&
                                (newMove[1] > -1 && newMove[1] < m) &&
                                (visited[newMove[0], newMove[1]] == false))
                            //&& (matrix[newMove[0]][newMove[1]] == '*' || matrix[newMove[0]][newMove[1]] == 'd'))
                            {
                                q.Enqueue(new QItem(newMove[0], newMove[1], current.Total + 1));
                                visited[newMove[0], newMove[1]] = true;
                            }
                        }
                    }
                }
                if (min != int.MaxValue)
                {
                    result = min;
                }
            }
            return(result);
        }
Ejemplo n.º 23
0
        public static int GetShortestDistanceBetweenTwoPoints(char[,] input)
        {
            if (input == null)
            {
                return(-1);
            }

            int rowMax = input.GetLength(0);
            int colMax = input.GetLength(1);

            bool[,] visited = new bool[rowMax, colMax];

            QItem source = null;

            //Find Source
            for (int i = 0; i < rowMax; i++)
            {
                for (int j = 0; j < colMax; j++)
                {
                    if (input[i, j] == 'S')
                    {
                        source = new QItem(i, j, 0);
                        break;
                    }
                    if (input[i, j] == '0')
                    {
                        visited[i, j] = true;
                    }
                }
            }

            if (source == null)
            {
                return(-1);
            }
            Queue <QItem> queue = new Queue <QItem>();

            queue.Enqueue(source);

            while (queue.Count > 0)
            {
                var current = queue.Dequeue();

                if (input[current.Row, current.Col] == 'D')
                {
                    return(current.Dist);
                }

                //Up
                if (current.Row - 1 >= 0 && !visited[current.Row - 1, current.Col])
                {
                    queue.Enqueue(new QItem(current.Row - 1, current.Col, current.Dist + 1));
                    visited[current.Row - 1, current.Col] = true;
                }

                //Down
                if (current.Row + 1 < rowMax && !visited[current.Row + 1, current.Col])
                {
                    queue.Enqueue(new QItem(current.Row + 1, current.Col, current.Dist + 1));
                    visited[current.Row + 1, current.Col] = true;
                }

                //Left
                if (current.Col - 1 >= 0 && !visited[current.Row, current.Col - 1])
                {
                    queue.Enqueue(new QItem(current.Row, current.Col - 1, current.Dist + 1));
                    visited[current.Row, current.Col - 1] = true;
                }

                //Right
                if (current.Col + 1 < colMax && !visited[current.Row, current.Col + 1])
                {
                    queue.Enqueue(new QItem(current.Row, current.Col + 1, current.Dist + 1));
                    visited[current.Row, current.Col + 1] = true;
                }
            }
            return(-1);
        }
Ejemplo n.º 24
0
        public int MinDistanceInMatrix(char[][] grid)
        {
            QItem source = new QItem(0, 0, 0);
            int   n      = grid.Length;

            bool[][] visited = new bool[n][];
            for (int i = 0; i < n; i++)
            {
                visited[i] = new bool[n];
            }
            for (int row = 0; row < n; row++)
            {
                for (int col = 0; col < n; col++)
                {
                    var cell = grid[row][col];
                    if (cell == '0')
                    {
                        visited[row][col] = true;
                    }
                    else if (cell == 's')
                    {
                        source.Row = row;
                        source.Col = col;
                    }
                }
            }

            Queue <QItem> q = new Queue <QItem>();

            q.Enqueue(source);
            while (q.Count > 0)
            {
                var current = q.Dequeue();
                if (grid[current.Row][current.Col] == 'd')
                {
                    return(current.Distance);
                }
                //up
                if (current.Row - 1 >= 0 && visited[current.Row - 1][current.Col] == false)
                {
                    q.Enqueue(new QItem(current.Row - 1, current.Col, current.Distance + 1));
                    visited[current.Row - 1][current.Col] = true;
                }
                //down
                if (current.Row + 1 < n && visited[current.Row + 1][current.Col] == false)
                {
                    q.Enqueue(new QItem(current.Row + 1, current.Col, current.Distance + 1));
                    visited[current.Row + 1][current.Col] = true;
                }

                //left
                if (current.Col - 1 >= 0 && visited[current.Row][current.Col - 1] == false)
                {
                    q.Enqueue(new QItem(current.Row, current.Col - 1, current.Distance + 1));
                    visited[current.Row][current.Col - 1] = true;
                }
                //right
                if (current.Col + 1 < n && visited[current.Row][current.Col + 1] == false)
                {
                    q.Enqueue(new QItem(current.Row, current.Col + 1, current.Distance + 1));
                    visited[current.Row][current.Col + 1] = true;
                }
            }

            return(-1);
        }
Ejemplo n.º 25
0
        private void pesquisarButton_Click(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;
            //
            //resultadoDGV.Rows.Clear();

            QItem queryData1 = new QItem(null, null);
            QItem queryData2 = new QItem(null, null);

            QItem queryCodigo      = new QItem(null, null);
            QItem queryClienteNome = new QItem(null, null);

            QItem queryFormaPagamento = new QItem(null, null);

            //dataEntrega
            if (this.dataInicioDTP.Text != "")
            {
                queryData1 = new QItem("dataMenor", this.dataInicioDTP.Value.ToString("yyyy-MM-dd"));
            }
            else
            {
                queryData1 = new QItem(null, null);
            }

            if (this.dataTerminoDTP.Text != "")
            {
                queryData2 = new QItem("dataMaior", this.dataTerminoDTP.Value.ToString("yyyy-MM-dd"));
            }
            else
            {
                queryData2 = new QItem(null, null);
            }

            //codigo
            if (this.codigoTB.Text != "")
            {
                queryCodigo = new QItem("v.id", this.codigoTB.Text);
            }
            else
            {
                queryCodigo = new QItem(null, null);
            }

            //cliente
            if (this.clienteNomeTB.Text != "")
            {
                //queryClienteNome = new QItem("c.nome LIKE %%", this.clienteNomeTB.Text);

                long id;
                if (long.TryParse(this.clienteNomeTB.Text, out id))
                {
                    queryClienteNome = new QItem("c.id", id);
                }
                else
                {
                    queryClienteNome = new QItem("c.nome LIKE %%", this.clienteNomeTB.Text);
                }
            }
            else
            {
                queryClienteNome = new QItem(null, null);
            }

            //formaPagamento
            if (this.avistaRB.Checked == true)
            {
                queryFormaPagamento = new QItem("v.formaPagamento", "avista");
            }
            if (this.chequeRB.Checked == true)
            {
                queryFormaPagamento = new QItem("v.formaPagamento", "cheque");
            }
            if (this.cartaoRB.Checked == true)
            {
                queryFormaPagamento = new QItem("v.formaPagamento", "cartao");
            }
            if (this.aprazoRB.Checked == true)
            {
                queryFormaPagamento = new QItem("v.formaPagamento", "aprazo");
            }
            if (this.noFormaPagamentoRB.Checked == true)
            {
                queryFormaPagamento = new QItem(null, null);
            }

            List <Library.Venda> vendas = Library.VendaBD.FindAdvanced(queryData1, queryData2, queryCodigo, queryClienteNome, queryFormaPagamento);

            toolStripStatusLabel2.Text = vendas.Count + " linhas.";


            //ColumnCliente.DisplayMember = "Nome";
            //ColumnCliente.CellTemplate.

            resultadoDGV.AutoGenerateColumns = false;
            resultadoDGV.DataSource          = vendas;

            /*
             * if (vendas != null)
             * {
             *  foreach (Library.Venda v in vendas)
             *  {
             *      string fp = "";
             *
             *      if (v.FormaPagamento == "avista")
             *          fp = "À vista";
             *      if (v.FormaPagamento == "aprazo")
             *          fp = "À prazo";
             *      if (v.FormaPagamento == "cartao")
             *          fp = "Cartão";
             *      if (v.FormaPagamento == "cheque")
             *          fp = "Cheque";
             *
             *      //resultadoDGV.Rows.Add(v.Id, v.Cliente.Nome, fp, v.Data);
             *
             *  }
             * }*/

            //
            this.Cursor = Cursors.Default;
        }