๐Ÿ”™ Back to Top

Wed Jul 22 07:34:03 JST 2015

้ญ”ๆณ•้™ฃใใ‚‹ใใ‚‹

Rubyใฎ็ทด็ฟ’ใฎใคใ‚‚ใ‚Šใงใ€ใ‚„ใ‚‹ใ ใ‘ใ‚ฒใƒผใ‚’AOJใงๆŽขใ—ใฆ่งฃใ„ใฆใŸ: ้ญ”ๆ–น้™ฃ | Aizu Online Judge

ๅฅ‡ๆ•ฐ\(n\)ใŒๅ…ฅๅŠ›ใ•ใ‚Œใ‚‹ใ‹ใ‚‰ใ€
ๅคงใใ•ใŒ\(n \times n\) ใฎๆ‰€่ฌ‚ใ€้ญ”ๆณ•้™ฃใ‚’ๆ›ธใ‘ใจใ„ใ†ใ‚‚ใฎใงใ€
้ญ”ๆณ•้™ฃใฎๆ›ธใๆ–นใ‚’ๅ•้กŒๆ–‡ใฎไธญใง่ชฌๆ˜Žใ—ใฆใ‚ใ‚‹.

(ใ“ใฎๅ•้กŒใฎๅผ•็”จๅ…ƒใงใ‚ใ‚‹PCKใจใ„ใ†ใฎใŒไฝ•ใชใฎใ‹็Ÿฅใ‚‰ใชใ„ใ‘ใ‚Œใฉใ€
่ชฌๆ˜ŽใŒไธๆญฃ็ขบใ ใชใใ€‚ใ€‚ใ€‚

่ชฌๆ˜Žใ•ใ‚ŒใŸ้ญ”ๆณ•้™ฃใฎไฝœใ‚Šๆ–นใ‚’ๅฎŒๅ…จใซ็œŸไผผใ‚‹ๅฟ…่ฆใŒใ‚ใ‚‹ใฎใ‹ใ€
ใ‚ใใพใงใƒ’ใƒณใƒˆใงใ‚ใฃใฆใ€่‡ช็”ฑใซ้ญ”ๆณ•้™ฃใ‚’ไฝœใ‚Œใฐใ„ใ„ใฎใ‹ใŒ
ๅˆคๅˆฅใงใใชใ„ใ—ๅฏงใ‚ๅพŒ่€…ใซ่ชญใ‚ใ‚‹ใŒใ€
ๅฎŸ้š›ใซใฏๅ‰่€…ใ‚‰ใ—ใ‹ใฃใŸ)

#!/usr/bin/ruby
# coding: utf-8

PI = Math.acos(-1)

def padding(n)
  ("    " + n.to_s)[-4, 4]
end

def solve(n)
  f = Array.new(n)
  for i in 0...n
    f[i] = Array.new(n, 0)
  end

  x = 1 + n/2
  y = n/2
  for k in 1..(n*n)
    while f[x][y] > 0
      x += 1
      y += n-1
      x %= n
      y %= n
    end
    f[x][y] = k
    x += 1
    y += 1
    x %= n
    y %= n
  end

  for i in 0...n
    for j in 0...n
      print padding(f[i][n-j-1])
    end
    puts ''
  end
end

while true
  n = STDIN.gets.to_i
  if n == 0
    break
  else
    solve(n)
  end
end