Как упростить код (таблица умножения)? - C#

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

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

Помогите пожалуйста. Можно ли вот это преобразовать в одну строку без промежуточных переменных и условий?

 static int[,] CreateTable(int startNumber, int endNumber)
        {
            int c = endNumber - startNumber;
            if (c < 0)
            {
                c = Math.Abs(c);
            }
            int size = c + 2;
            int[,] table = new int[size, size];
            int coefficient;
            if (startNumber > endNumber)
            {
                coefficient = 1;
            }
            else
            {
                coefficient = -1;
            }
            for (int i = 1; i < table.GetLength(0); i++)
            {
                table[i, 0] = startNumber - (coefficient * i) + coefficient;
                table[0, i] = table[i, 0];
                for (int j = 1; j < table.GetLength(1); j++)
                {
                    table[i, j] = table[i, 0] * (startNumber - (coefficient * j) + coefficient);
                }
            }
            return table;
        }

Решение задачи: «Как упростить код (таблица умножения)?»

textual
Листинг программы
            var realStart = Math.Min(startNumber, endNumber);
            var tableSize = Math.Abs(endNumber - startNumber) + 1;
            var revertTable = endNumber > startNumber;
            var myTable = Enumerable.Repeat(1, 1).Concat(
                Enumerable.Range(realStart, tableSize).OrderBy(x => revertTable ? x : -x))
                .Select(x => Enumerable.Repeat(1, 1).Concat(
                    Enumerable.Range(realStart, tableSize).OrderBy(y => revertTable ? y : -y))
                    .Select(y => x == 1 && y == 1 ? 0 : y*x).ToArray())
                .ToArray();

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


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

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

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