Я работаю над музыкальным приложением, которое читает лилий и midi-файлы. Оба типа файлов необходимо преобразовать в наше собственное хранилище.C# Объединить список массивов с разницей разницы
Для lilypond вам необходимо прочитать повторы и их альтернативы. Однако может быть разница в подсчете. Если есть три повтора, но две альтернативы, первые два повторения получают первую альтернативу, а третий вариант получает последнюю альтернативу.
Из-за повторного использования, начиная с фронта, я не знаю, как это сделать. Мой текущий код выглядит так, поэтому единственная часть отсутствует - это комбинирование repeatList и altList.
Я надеялся, что для этого есть математическое решение, потому что переворачивание массивов будет трагичным для выполнения.
private List<Note> readRepeat(List<string> repeat, List<string> alt, int repeatCount)
{
List<Note> noteList = new List<Note>();
List<Note> repeatList = new List<Note>();
List<List<Note>> altList = new List<List<Note>>();
foreach (string line in repeat)
{
repeatList.AddRange(readNoteLine(line));
}
foreach (string line in alt)
{
altList.Add(readNoteLine(line));
}
while (repeatCount > 0)
{
List<Note> toAdd = repeatList.ToList(); // Clone the list, to destroy the reference
if (altList.Count() != 0)
{
// logic to add the right alt
}
noteList.AddRange(toAdd);
repeatCount--;
}
return noteList;
}
В приведенном выше коде два списка заполняются примечаниями. Их функция следующая: RepeatList: Основной список заметок, которые воспроизводятся x раз AltList: список возможностей, которые нужно добавить в список повторов.
Некоторые примеры ввода/вывода
- RepeatCount = 4
- AltList.Count() = 3
- Повторить 1 получает: Вариант 1
- Повторите 2 получает: Alt 1
- Repeat 3 получает : Alt 2
- Повторить 4 получает: Alt 3
Пример в визуальном стиле
что вы на самом деле здесь делаете? вы добавляете элементы в 2 списка, которые находятся только в области функции и возвращают третий список, который никогда не заполняется данными. –
Не могли бы вы предоставить некоторые образцы данных и ожидаемый результат? –
@GiladGreen Я думаю, он хочет, чтобы мы заполнили пробелы. Но я не понимаю этого требования. Пример ввода/вывода будет необходим. –