-- peter喜欢玩数字游戏,但数独这样的游戏对他来说太简单了,于是他准备玩一个难的游戏。
-- 游戏规则是在一个N*N的表格里填数,规则:对于每个输入的N,从左上角开始,总是以对角线为起点,先横着填,再竖着填。
-- 这里给了一些样例,请在样例中找到规律并把这个N*N的表格打印出来吧。
-- 输入描述: 多组测试数据(数据量在100组以内)。
-- 每组测试数据只有一行为一个整数N(1<=N<=30),表示表格的大小。
-- 输出描述: 对于每组输入数据,输出N行,为填完的表格(N行,每行N个整数,每个数字之间用空格隔开。
--[[
local function ctfx (num)
if not tonumber(num) then error ("invalid number") end
local st = {}
local step = 1
local coun = 1
local tmp = 0
local k = 0
for i=1,num do
st[i] = {}
end
local bk = {}
for i=num,1,-1 do
bk[num-i+1] = 2*i-1
end
for i=1,num do
coun = coun + 1
tmp = coun
k = i
for j=1, bk[i] do -- j:只记录个数。
if j <= (num-i+1) then
if num ~= i then
st[i][k] = step; step = step + 1;k = k + 1
else
st[num][num] = step
end
else
st[tmp][i] = step
step = step + 1
tmp = tmp + 1
end
end
end
return st
end
local n = 5
local jsp = ctfx(n)
for i=1,n do
for j=1,n do
-- print (jsp[i][j])
io.write(string.format("%-2d ", jsp[i][j]))
end
io.write(string.format("\n-------------\n"))
end
]]