powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как найти список с определенными соседствующими элементами?
12 сообщений из 12, страница 1 из 1
Как найти список с определенными соседствующими элементами?
    #39737800
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
к примеру есть

Код: c#
1.
 List<string> ls = new List<string> { "a", "b", "c", "d","e" };



Я знаю что элемены например "c" и "d" рядом быть не должны, этот список нафик, проверка должна вернуть false

Как это сделать без кучи циклов (и да, лучше на Linq, чтото я на него подсел)?

Если важно - элементы в списке уникальны, два раза не встречаются.
...
Рейтинг: 0 / 0
Как найти список с определенными соседствующими элементами?
    #39737808
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
return !string.Concat(ls).Contains("cd");
...
Рейтинг: 0 / 0
Как найти список с определенными соседствующими элементами?
    #39737809
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но если хочешь более общее решение (не со строкой и на Linq) то можно примерно так
Код: c#
1.
2.
var prev = "";
return ls.All(n => { if (prev == "c" && n == "d") return false; prev = n; return true; });
...
Рейтинг: 0 / 0
Как найти список с определенными соседствующими элементами?
    #39737815
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это конечно не самый оптимальный вариант, так как по сути метод O(2n), а не O(n) или O(logn)
список сортированный или нет?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
class Program
{
    static void Main(string[] args)
    {
        IList<string> ls = new List<string> { "a", "b", "c", "d", "e" };
        var result = Check(ls, "c", "d");
        Console.WriteLine(result);
        Console.ReadKey();
    }

    private static bool Check<T>(IList<T> source, T first, T second)
    {
        var r = source.IndexOf(first) - source.IndexOf(second);
        return r > -2 && r < 2;
    }
}
...
Рейтинг: 0 / 0
Как найти список с определенными соседствующими элементами?
    #39737886
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет список не сортированный, он упорядоченный...

Вообще это задача коммивояжера и список - один из милионов вариантов. просто между определенными точками препятствие, соответственно вариант с прямым проходом между этими точками нужно удалить.

ну и список собственно не строк, а объектов

Код: c#
1.
2.
3.
string name;
double x;
double y;



А Linq... я им не так давно пользуюсь но некоторые возожности радуют - например сортировка списков таких объектов

Код: c#
1.
listobj = listobj.OrderBy(t=> t.name).ToList();


так что теоретически можно временно отсортировать, только на это время потратится...
...
Рейтинг: 0 / 0
Как найти список с определенными соседствующими элементами?
    #39737897
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlтолько на это время потратится...
обычно данные и факты отделяют от представления (сортировки).
Поэтому "упорядоченный список по порядку" надо уточнять.
...
Рейтинг: 0 / 0
Как найти список с определенными соседствующими элементами?
    #39737905
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Проще надо быть

Код: c#
1.
2.
3.
4.
IList<string> ls = new List<string> { "a", "b", "c", "d", "e" };
            bool b = (ls.IndexOf("c") - ls.IndexOf("d")) != -1;
            Console.WriteLine(b) ;
            Console.ReadKey();
...
Рейтинг: 0 / 0
Как найти список с определенными соседствующими элементами?
    #39737907
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Проще надо быть

Код: c#
1.
2.
3.
4.
IList<string> ls = new List<string> { "a", "b", "c", "d", "e" };
            bool b = (ls.IndexOf("c") - ls.IndexOf("d")) != -1;
            Console.WriteLine(b) ;
            Console.ReadKey();

выше было) только через метод.
...
Рейтинг: 0 / 0
Как найти список с определенными соседствующими элементами?
    #39737908
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Petro123Cat2Проще надо быть

Код: c#
1.
2.
3.
4.
IList<string> ls = new List<string> { "a", "b", "c", "d", "e" };
            bool b = (ls.IndexOf("c") - ls.IndexOf("d")) != -1;
            Console.WriteLine(b) ;
            Console.ReadKey();


выше было) только через метод.
Я видел, вот и сказал, что проще надо быть. Зачем в этом методе такое ужасное сравнение - r > -2 && r < 2 ?
...
Рейтинг: 0 / 0
Как найти список с определенными соседствующими элементами?
    #39737910
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тогда уж
Код: c#
1.
Math.Abs(...) != 1
...
Рейтинг: 0 / 0
Как найти список с определенными соседствующими элементами?
    #39737911
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Shocker.ProНу тогда уж
Код: c#
1.
Math.Abs(...) != 1


Да, так лучше.
Хотя в условиях задачи явно не сказано, что нелегальными парами являются как cd , так и dc
...
Рейтинг: 0 / 0
Как найти список с определенными соседствующими элементами?
    #39737946
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2ужасное сравнение - r > -2 && r < 2 ?да. Тут конечно вы правы.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как найти список с определенными соседствующими элементами?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]