예제 #1
0
        private void CriarComNovaDestino(List <Step> list, string destino, decimal tempo)
        {
            if (list.Any(x => x.Destino == destino))
            {
                return;
            }

            for (int i = 0; i <= list.Count - 1; i++)
            {
                var c = new Caminho();

                for (int y = 0; y <= list.Count - 1; y++)
                {
                    c.AddStep(list[y].Origem, list[y].Destino, list[y].Tempo);
                }

                c.AddStep(list[i].Destino, destino, tempo);

                AdicionarCaminho(c);
            }
        }
예제 #2
0
        private void CriarComNovaOrigem(List <Step> list, string origem, decimal tempo)
        {
            if (list.Any(x => x.Origem == origem))
            {
                return;
            }

            for (int i = 0; i <= list.Count - 1; i++)
            {
                var c = new Caminho();

                c.AddStep(origem, list[i].Destino, list[i].Tempo);

                for (int y = 0; y < i; y++)
                {
                    c.AddStep(list[i].Destino, list[y].Origem, list[y].Tempo);
                }

                AdicionarCaminho(c);
            }
        }
예제 #3
0
        private void AddTrecho(string origem, string destino, decimal tempo)
        {
            var x2 = _caminhos.Where(x => x.Steps.Any(y => y.Destino == origem || y.Origem == destino)).ToList();

            var caminho = new Caminho();

            caminho.AddStep(origem, destino, tempo);

            AdicionarCaminho(caminho);

            // existem caminhos que podem começar antes, depois ou "no meio" destes caminhos já criados
            foreach (var x in x2)
            {
                MontarTodosCaminhos(x, origem, destino, tempo);
            }
        }