Соединить числа в квадрате "змейкой" - C#
Формулировка задачи:
На конверт нужно клеить марку.
Место приклеивание нужно заштриховать "змейкой", как показано в примере.
Требуется вывести квадрат с числами, в каком порядке следует соединять точки квадрата.
Сначала вправо, потом влево-вниз по диагонали, вниз, вправо-вверх по диагонали и так далее, по схеме.
Последней будет точка в правом нижнем углу.
Вывести квадрат, состоящий из NxN ячеек, заполненный числами от 1 до N2 "змейкой".
Начальные данные: Целое число N <= 317
Вывод результата: Квадрат со значениями согласно условию.
Количество знакомест, отводимых для отображения чисел,
определяется количеством разрядов максимального числа в квадрате.
Значения выводятся с выравниванием чисел в столбце по правому краю.
Между столбцами - один пробел. После последнего числа в строке пробел не ставится.
Решение задачи: «Соединить числа в квадрате "змейкой"»
textual
Листинг программы
class Generator : IEnumerable<Tuple<int, int, int>> { int size, row, col; Action next; public Generator(int n) { this.size = n; } public IEnumerator<Tuple<int, int, int>> GetEnumerator() { next = Init; foreach (int x in Enumerable.Range(1, size * size)) { next(); yield return Tuple.Create(row, col, x); } } private void Init() { row = col = 0; next = Right; } void Right() { col++; if (row == 0) next = DownLeft; else next = UpRight; } void Down() { row++; if (col < size - 1) next = UpRight; else next = DownLeft; } void DownLeft() { row++; col--; if (row == size - 1) next = Right; else if (col == 0) next = Down; } void UpRight() { row--; col++; if (col == size - 1) next = Down; else if (row == 0) next = Right; } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д