n = gets.strip.to_i def make_spiral(n) if n == 0 return [] end if n == 1 return [1] end spiral = [] sub_spiral = make_spiral(n - 2) spiral += (1..n).to_a (0...n - 2).each do |i| spiral += [4 * n - 4 - i] (0...n - 2).each do |j| spiral += [sub_spiral[i * (n - 2) + j] + 4 * n - 4] end spiral += [n + 1 + i] end (1..n).each do |i| spiral += [3 * n - 1 - i] end return spiral end spiral = make_spiral(n) (0...n).each do |i| (0...n).each do |j| print "#{("00" + spiral[i * n + j].to_s)[-3, 3]} " end print "\n" end