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