Как упростить код (таблица умножения)? - 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();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д