В нелинейном списке найти заданный элемент. Результат выдать в виде линейного списка - C#
Формулировка задачи:
Здравствуйте. У меня есть задача: В нелинейном списке найти заданный элемент (м.б., не атом). Результат выдать в виде линейного списка (отдельный список для каждого вхождения), каждый элемент которого является индексом очередного сегмента поиска. Если элемент не найден, выдать 0.
Проблема: Я решила подавать сложный список как строку и парсить ее потом для поиска. Так вот, никак не удается разработать хороший алгоритм для этого. Все время теряется уровень или списки путаются с простыми элементами. Нужен функциональный подход, а не ООП. Помогите пожалуйста, если у кого есть идеи или кто встречался с подобными задачами. Спасибо.
Решение задачи: «В нелинейном списке найти заданный элемент. Результат выдать в виде линейного списка»
textual
Листинг программы
static IEnumerable<string> FindElement(ref string input) { var level = 0; var currentPosition = 0; var positions = new List<int> { 0 }; var result = new List<string> { "(" }; foreach (var simbol in input.Skip(1).Take(input.Length - 2)) { switch (simbol) { case ')': currentPosition = positions[--level]; break; case '(': positions.Add(0); positions.Insert(level, currentPosition + 1); currentPosition = 0; level++; break; case '*': currentPosition++; for (var i = 0; i < level; ++i) { result.Add("("); result[i] += " " + positions[i]; } result[level] += " " + currentPosition; break; case ' ': break; default: currentPosition++; break; } } return result; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д