Соединить числа в квадрате "змейкой" - 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();
    }
}

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


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

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

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