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); } }
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); } }
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); } }