Объединить два перечисляемых числа, сохраняя порядок, определенный любым источником.C#

Место общения программистов C#
Ответить
Anonymous
 Объединить два перечисляемых числа, сохраняя порядок, определенный любым источником.

Сообщение Anonymous »

Мне нужно объединить два перечислимых значения, сохраняя при этом относительный порядок элементов, определенный в исходных перечислимых значениях.
Например, если enumerable1 содержит «фокстрот», «uniform» и «кило», а enumerable2 содержит «uniform» , "чарли" и "кило", результирующее перечисляемое должно содержать "фокстрот", "униформа", "чарли", "кило".
Пояснение: из enumerable1 мы знаем, что "фокстрот" " появляется перед "uniform", а из enumerable2 мы знаем, что "uniform" появляется перед "charlie". Поэтому мы можем предположить, что «фокстрот» появляется раньше, чем «униформа» появляется перед «чарли».
Кроме того, из enumerable1 мы знаем, что «униформа» появляется перед «кило», а из enumerable2 мы знаем, что «чарли» появляется после «униформа» и перед «кило».
Объединив все это, мы можем определить окончательный порядок слов «фокстрот», «униформа», «чарли» и «кило».
Однако бывают случаи, когда это не сработает, поскольку порядок не может быть определен или оба исходных перечисления противоречат друг другу.
Например, если enumerable3 содержит "фокстрот" и "чарли", а enumerable4 содержит "uniform" и " килограмм», их нельзя объединить, потому что нельзя определить какой-либо порядок. Или, если enumerable5 содержит «фокстрот» и «uniform», а enumerable6 содержит «uniform» и «фокстрот», их нельзя объединить, и должно быть возвращено пустое перечисляемое.
Хотя это легко представить себе в голове, что мне трудно превратить это в код. Предпочтительно C#.
В этом очень конкретном случае максимальное количество элементов в каждом перечислимом равно 4, но я думаю, что не помешало бы иметь код, который работал бы независимо от этого.
Есть идеи?


Подробнее здесь: https://stackoverflow.com/questions/786 ... her-source
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»