fork download
  1. def main(number, clockwise):
  2. numberSquared = number * number
  3. arrayOfNumbers = [[0 for x in range(number)] for y in range(number)]
  4.  
  5. charactersPerNumber = 2
  6.  
  7. n = numberSquared
  8. while(n / 10 >= 1):
  9. charactersPerNumber += 1
  10. n = int(n/10)
  11.  
  12. x = 0
  13. y = 0
  14.  
  15. stepValue = 1
  16.  
  17. upperBound = number - 1
  18. lowerBound = 0
  19.  
  20. forward = True
  21.  
  22. for i in range(1,numberSquared + 1):
  23. if (clockwise):
  24. arrayOfNumbers[y][x] = resize(i, charactersPerNumber)
  25. else:
  26. arrayOfNumbers[x][y] = resize(i, charactersPerNumber)
  27. #print(str(x) + ", " + str(y))
  28.  
  29. if ((x < upperBound and forward) or (x > lowerBound and not forward)):
  30. x += stepValue
  31. continue
  32.  
  33. if ((y < upperBound and forward) or (y > (lowerBound + 1) and not forward)):
  34. y += stepValue
  35. continue
  36.  
  37. if (forward):
  38. upperBound -= 1
  39. else:
  40. lowerBound += 1
  41.  
  42. forward = not forward
  43. stepValue = -stepValue
  44.  
  45. x += stepValue
  46.  
  47. for x in range(0,number):
  48. str = ""
  49. for y in range(0,number):
  50. str += arrayOfNumbers[x][y]
  51.  
  52. print(str)
  53.  
  54.  
  55. def resize(number, characters):
  56. lengthOfNumber = len(str(number))
  57. numString = str(number)
  58.  
  59. while(lengthOfNumber < characters):
  60. # numString += " "
  61. numString = " " + numString
  62. lengthOfNumber += 1
  63.  
  64. return numString
  65.  
  66. if __name__ == "__main__":
  67. main(5, True)
  68. print('\n\n')
  69. main(4, False)
Success #stdin #stdout 0.02s 27696KB
stdin
Standard input is empty
stdout
  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



  1 12 11 10
  2 13 16  9
  3 14 15  8
  4  5  6  7