Я пытаюсь отобразить два непрерывных отсортированных набора целых чисел (с потенциально различным числом элементов) в один непрерывный отсортированный набор целых чисел, сохраняя линейный интервал.
например A: {1,2,3} B:{1,2,3,4} может отображаться на C: {1,2,3,4,5,6,7} по A: {1-> 1, 2-> 4, 3-> 7} и B: {1-> 1, 2-> 3, 3-> 5, 4-> 7}
Довольно каждый делает это вручную, но у меня возникают проблемы с обобщением.
Разлагая проблемы, мне нужно найти (1) количество сегментов в выходном наборе и (2) вход -> выходное отображение
Мое решение, представленное здесь:
// На выходе есть LCM (| A | -1, | B | -1) +1 сегментов C
int numBuckets = LCM (A.Count () - 1, B.Count () - 1) + 1;
// Отображение элементов в A в сегменты в выходных данных C
для (int i = 0; i {mapping.Add (A.ElementAt (i), (i * ((numBuckets - 1) / (A.Count () - 1))). ToString ());}