fork download
  1. import java.util.Scanner;
  2.  
  3. public class Main {
  4. private static Scanner in;
  5.  
  6. public static void main(String[] args) {
  7. System.out.println("Enter a number:");
  8. in = new Scanner(System.in);
  9. int size = in.nextInt();
  10. if(size == 1){System.out.println(1); return;}
  11.  
  12. int[] location = {0,0};
  13. int[][] field = new int[size][size];
  14. int count = 1;
  15. int direction = 0; //0 = R, 1 = D, 2 = L, 3 = U
  16.  
  17. while(count <= size*size){
  18. field[location[0]][location[1]] = count;
  19. if(direction == 0){
  20. if(location[1] + 1 >= size){direction++;}
  21. else if(field[location[0]][location[1]+1] >= 1){ //If occupied
  22. direction++;
  23. }
  24. }
  25.  
  26. if(direction == 1){
  27. if(location[0] + 1 >= size){direction++;}
  28. else if(field[location[0]+1][location[1]] >= 1){ //If occupied
  29. direction++;
  30. }
  31. }
  32.  
  33. if(direction == 2){
  34. if(location[1] - 1 < 0){direction++;}
  35. else if(field[location[0]][location[1]-1] >= 1){ //If occupied
  36. direction++;
  37. }
  38. }
  39.  
  40. if(direction == 3){
  41. if(field[location[0]-1][location[1]] >= 1){ //If occupied
  42. direction = 0;
  43. }
  44. }
  45.  
  46. if(direction == 0){
  47. location[1]++;
  48. }
  49. else if(direction == 1){
  50. location[0]++;
  51. }
  52. else if(direction == 2){
  53. location[1]--;
  54. }
  55. else if(direction == 3){
  56. location[0]--;
  57. }
  58. count++;
  59. }
  60. for(int y = 0; y < size;y++){
  61. for(int x = 0; x < size; x++){
  62. System.out.print(field[y][x] + " ");
  63. }
  64. System.out.println();
  65. }
  66. }
  67. }
Success #stdin #stdout 0.06s 4386816KB
stdin
 5
stdout
Enter a number:
1 2 3 4 5 
16 17 18 19 6 
15 24 25 20 7 
14 23 22 21 8 
13 12 11 10 9