Урок 13.1 Задача 22

Урок 13.1 Задача 22:

Пользователь передает целые положительные число N и M, выведете на экран последовательность от 1 до N, так чтобы ширина "ёлочки" увеличивалась до M чисел, то уменьшалась до 1.

var
a, i, j, n, m :integer;
x: boolean;                    // переключатель ограничителя чисел в строке
begin
  j:=1;                        // ограничитель числел в строке, начинаем с 1
  write('Введите число N: ');  // просим ввести максимальное число для счетчика со сплошной нумерацией
  readln(n);                   // считываем максимальное число
  write('Введите число M: ');  // просим ввести ширину, "вершину"
  readln(M);                   // считываем ширину
  for a:=1 to n do        // цикл со счетчиком со сплошной нумерацией от 1 до максимального числа
  begin
    if (j=1) then         // когда ограничитель чисел в строке сравнялся с 1, "яма"
      x:=false            // переключатель ставим в положение фолс
    else if (j=m) then    // когда ограничитель чисел в строке сравнялся с вершиной
        x:=true;          // переключатель ставим в положение тру
    i:=i+1;               // увеличиваем счетчик чисел в строке на 1
    write(a, ' ');        // выводим на экран значение сплошного счетчика
    if (i=j) then         // когда счетчик чисел в строке сравнялся с ограничителем чисел в строке
    begin
      writeln ();         // переходим на новую строку
      if (x = false) then // проверяем переключатель, если в положении фолс (после ямы)
        j:=j+1            // увеличиваем ограничитель чисел на 1
    else                  // если переключатель в положении тру (после вершины)
      j:=j-1;             // из ограничителя чисел вычитаем 1
    i:=0;                 // сбрасываем счетчик чисел в строке
    end;
  end;
  readln();
end.  

Вывод в консоли:

Введите число N: 51
Введите число M: 5
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19
20 21 22
23 24
25
26 27
28 29 30
31 32 33 34
35 36 37 38 39
40 41 42 43
44 45 46
47 48
49
50 51