Задать вопрос
  • Как заполнить массив NxM по спирали?

    @canadamsocow
    //PascalABC.NET
    begin
    var (n,m) := (3,6);
    var a := new integer[n,m]; //array[0..n-1, 0..m-1] of integer
    for var i := 0 to n-1 do
    for var j := 0 to m-1 do begin
    var x := min(i,j,n-1 - i, m-1 - j); //номер спирали, минимальное из 4-х чисел
    a[i,j] := n*m+1 - if (i>x) and (m-1-j>x) then
    (n-2*x-2)*(m-2*x-2) + (i-x) + (j-x)
    else (n-2*x)*(m-2*x) - (i-x) - (j-x)
    end;
    a.Println
    end.
    Ответ написан
    Комментировать