Переписать код обработки массива без использования стандартных функций - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет, дан код и надо реализовать поэлементную обработку массива, или же расписать стандартные функции
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();
        }
Всего 2 программы, со стандартными функциями я знаю как это происходит, а вот чтобы без них, пёс его знает, не знаю)

Решение задачи: «Переписать код обработки массива без использования стандартных функций»

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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5
Похожие ответы