Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2016, 17:01   #1
cezet
Новичок
Джуниор
 
Регистрация: 25.04.2016
Сообщений: 2
По умолчанию Задача по сортировке

Здравствуйте форумчане, перепала такая задача: Существует некоторый перечень карточек. Каждая карточка содержит в себе пункт отправления и пункт назначения. Гарантируется что если упорядочить эти карточки так чтобы для каждой карточки в упорядоченном списке пункт назначения на ней совпадал с пунктом отправления в следующей карточке в списке, получится один список карточек без циклов и пропусков. Необходимо написать функцию которая принимает набор неупорядоченных карточек и возвращает набор упорядоченных.
Накидал алгоритм, прошу ткнуть носом что и где криво, буду благодарен за ссылки статьи книги.
Код:
class Program
    {

        static void Main(string[] args)
        {

            var c1 = new Card() { From = "Moscow", To = "London" };
            var c2 = new Card() { From = "London", To = "Krakow" };
            var c3 = new Card() { From = "Krakow", To = "Vilnus" };
            var c4 = new Card() { From = "Vilnus", To = "Vankuver" };

            List<Card> list = new List<Card>() {c2, c3, c4, c1};
            Queue<Card> sorted = new Queue<Card>();
            
            foreach (var c in list)
            {
                if (String.IsInterned(c.From) == null) c.From = String.Intern(c.From);
                if (String.IsInterned(c.To) == null) c.To = String.Intern(c.To);
            }

            var toarr = list.Select(x => x.To);
            string start = list.Select(x => x.From).Except(toarr).Single();

            var firstCard = list.Single(x => String.ReferenceEquals(x.From, start));
            sorted.Enqueue(firstCard);
            
            string next = firstCard.To;
            list.Remove(firstCard);

            while (list.Count > 0)
            {
                var nextCard = list.Single(x => String.ReferenceEquals(x.From, next));
                sorted.Enqueue(nextCard);
                next = nextCard.To;
                list.Remove(nextCard);
            }

            Console.WriteLine("RESULT:");
            while (sorted.Count > 0)
            {
                var c = sorted.Dequeue();
                Console.WriteLine(String.Format("{0} -> {1}", c.From, c.To));
            }
            Console.ReadKey();
        }
    }

    public class Card
    {
        public string From { get; set; }
        public string To { get; set; }
    }
cezet вне форума Ответить с цитированием
Старый 25.04.2016, 17:16   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

3 предложение не очень понятно. Несколько карточек с одним и тем же From или To могут быть? Больше примеров входных данных бы.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 25.04.2016, 17:37   #3
cezet
Новичок
Джуниор
 
Регистрация: 25.04.2016
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
3 предложение не очень понятно. Несколько карточек с одним и тем же From или To могут быть? Больше примеров входных данных бы.
нет, карточки - "уникальны"

пример:
есть карточки:
1: Москва -> Лондон
2: Лондон -> Краков
3: Краков -> Вильнюс
4: Вильнюс -> Ванкувер

на вход подаем "массив" карточек неупорядоченный то есть :
1: Лондон -> Краков
2: Москва -> Лондон
3: Вильнюс -> Ванкувер
4: Краков -> Вильнюс

на выходе должны получить:
1: Москва -> Лондон
2: Лондон -> Краков
3: Краков -> Вильнюс
4: Вильнюс -> Ванкувер
cezet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача 1-го курса по сортировке массива Arendeor Помощь студентам 0 18.05.2012 22:08
Задача по сортировке.С++. Belka.ru Помощь студентам 1 07.12.2011 09:06
Задача по сортировке массива! Chester18 Помощь студентам 1 30.10.2009 19:31
Паскаль. Задача по сортировке igoreha Помощь студентам 8 07.04.2009 14:20