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, 19:11
"написать код понятный компьютеру может любой. Написать код понятный человек могут не только лишь все, мало кто может."
Oleksandr Klymenko Lead Software Engineer
6 марта 2018, 19:02
есть способ обойтись 1 циклом