Нужно заполнить матрицу с центра по спирали против часовой стрелки(лево-вниз-право-вверх)

Нахожу много подобных решений, но никак не могу подстроить под свое, вот что нашел, но это не то, здесь заполняется право-вниз-влево-вверх, мне же нужно лево-вниз-право-вверх

#include <iostream>
#include <iomanip>
#include <vector>
 
 using namespace std;
 
int main()
{
    while (true)
    {
        cout << "Enter N size of matrix (0 - exit): ";
 
        size_t n = 0;
        std::cin >> n;
 
        if (!n) break;
 
        cout << endl;
 
        vector<vector<int>> v(n, vector<int>(n));
 
        size_t i = 0, j = n - 1;
 
        int value = n * n - 1;
 
        while (n != 0)
        {
            size_t k = 0;
            do { v[i][j--] = value--; } while (++k < n - 1);
            for (k = 0; k < n - 1; k++) v[i++][j] = value--;
            for (k = 0; k < n - 1; k++) v[i][j++] = value--;
            for (k = 0; k < n - 1; k++) v[i--][j] = value--;
 
            ++i; --j; n = n < 2 ? 0 : n - 2;
        }
 
        for (const auto &row : v)
        {
            for (int x : row) cout << setw(2) << x << ' ';
            cout << endl;
        }
 
        cout << endl;
    }
}

Ответы (1 шт):

Автор решения: MBo

Ну покумекали бы, что отвечает за направления

size_t i = 0, j = 0;

int value = n * n - 1;

while (n != 0)
{
    size_t k = 0;
    do { v[i][j++] = value--; } while (++k < n - 1);
    for (k = 0; k < n - 1; k++) v[i++][j] = value--;
    for (k = 0; k < n - 1; k++) v[i][j--] = value--;
    for (k = 0; k < n - 1; k++) v[i--][j] = value--;

    ++i; ++j; n = n < 2 ? 0 : n - 2;
}
→ Ссылка