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

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

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

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

Листинг программы
  1. static int[,] CreateTable(int startNumber, int endNumber)
  2. {
  3. int c = endNumber - startNumber;
  4. if (c < 0)
  5. {
  6. c = Math.Abs(c);
  7. }
  8. int size = c + 2;
  9. int[,] table = new int[size, size];
  10. int coefficient;
  11. if (startNumber > endNumber)
  12. {
  13. coefficient = 1;
  14. }
  15. else
  16. {
  17. coefficient = -1;
  18. }
  19. for (int i = 1; i < table.GetLength(0); i++)
  20. {
  21. table[i, 0] = startNumber - (coefficient * i) + coefficient;
  22. table[0, i] = table[i, 0];
  23. for (int j = 1; j < table.GetLength(1); j++)
  24. {
  25. table[i, j] = table[i, 0] * (startNumber - (coefficient * j) + coefficient);
  26. }
  27. }
  28. return table;
  29. }

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

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

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


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

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

7   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы