Переписать код обработки массива без использования стандартных функций - C#
Формулировка задачи:
Всем привет, дан код и надо реализовать поэлементную обработку массива, или же расписать стандартные функции
Всего 2 программы, со стандартными функциями я знаю как это происходит, а вот чтобы без них, пёс его знает, не знаю)
static int[] process(int[] mas) { int mS = Series2(mas).Max(s => s.Length); return Series2(mas) .SelectMany(s => s.Length == mS ? s.Concat(new[] { s[0] }) : s) .ToArray(); }
static void pr (ref int [] a, out int [] b) { b = a.Distinct().ToArray(); }
Решение задачи: «Переписать код обработки массива без использования стандартных функций»
textual
Листинг программы
private static int Max<TSource>(IEnumerable<TSource> source, Func<TSource, int> selector) { int max = int.MinValue; foreach (TSource element in source) { max = Math.Max(max, selector(element)); } return max; } private static IEnumerable<TResult> SelectMany<TSource, TResult>(IEnumerable<IEnumerable<TSource>> source, Func<TSource, TResult> selector) { foreach (IEnumerable<TSource> enumerable in source) { foreach (TSource element in enumerable) { yield return selector(element); } } } private static TResult[] ToArray<TResult>(IEnumerable<TResult> source) { TResult[] array = null; var length = 0; var collection = source as ICollection<TResult>; if (collection != null) { length = collection.Count; if (length > 0) { array = new TResult[length]; collection.CopyTo(array, 0); } } else { foreach (TResult element in source) { if (array == null) array = new TResult[4]; else if (array.Length == length) { var elementArray = new TResult[checked (length * 2)]; Array.Copy(array, 0, elementArray, 0, length); array = elementArray; } array[length] = element; ++length; } } if (length == 0) return new TResult[0]; if (array.Length == length) return array; var elementArray2 = new TResult[length]; Array.Copy(array, 0, elementArray2, 0, length); return elementArray2; } private static IEnumerable<TResult> Distinct<TResult>(IEnumerable<TResult> source) { var distincts = new List<TResult>(); foreach (TResult element in source) { if (!distincts.Contains(element)) { distincts.Add(element); } } return distincts; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д