JavaRush /Java блог /Random /Матрица спиралью: код в одну строчку
Shama Bidjiev
1 уровень

Матрица спиралью: код в одну строчку

Статья из группы Random
Когда написал алгоритм "матрица спиралью" мой код составил 35-40 строк. А потом я увидел вот это: for(int d=1,r=1,x=-1,y=0,b=Nx;1<=(d%2==0?Nx--:Ny--);b+=d++%2==0?Nx:Ny) while (r<=b) m[x-=(d%4-2)%2][y+=(d%4-1)%2]=r++;


public static void main(String[] args) {
        int Nx=9,Ny=6; int[][] m=new int[Nx][Ny];

        for(int d=1,r=1,x=-1,y=0,b=Nx;1<=(d%2==0?Nx--:Ny--);b+=d++%2==0?Nx:Ny)
            while (r<=b) m[x-=(d%4-2)%2][y+=(d%4-1)%2]=r++;

//проверка
        for (int i = 0; i <9 ; i++) {
            System.out.println();
            for (int j = 0; j <6 ; j++) {
                System.out.print(m[i][j]+" ");
            }
        }
    }

Комментарии (2)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Сергеев Виктор Уровень 40 Master
6 марта 2018
"написать код понятный компьютеру может любой. Написать код понятный человек могут не только лишь все, мало кто может."
Oleksandr Klymenko Уровень 13
6 марта 2018
есть способ обойтись 1 циклом