120 lines
3.3 KiB
Lua
120 lines
3.3 KiB
Lua
function initN()
|
|
local n = {}
|
|
for i=1,15 do
|
|
n[i] = {}
|
|
for j=1,11 do
|
|
n[i][j] = " "
|
|
end
|
|
n[i][6] = "x"
|
|
end
|
|
return n
|
|
end
|
|
|
|
function horiz(n, c1, c2, r)
|
|
for c=c1,c2 do
|
|
n[r+1][c+1] = "x"
|
|
end
|
|
end
|
|
|
|
function verti(n, r1, r2, c)
|
|
for r=r1,r2 do
|
|
n[r+1][c+1] = "x"
|
|
end
|
|
end
|
|
|
|
function diagd(n, c1, c2, r)
|
|
for c=c1,c2 do
|
|
n[r+c-c1+1][c+1] = "x"
|
|
end
|
|
end
|
|
|
|
function diagu(n, c1, c2, r)
|
|
for c=c1,c2 do
|
|
n[r-c+c1+1][c+1] = "x"
|
|
end
|
|
end
|
|
|
|
function initDraw()
|
|
local draw = {}
|
|
|
|
draw[1] = function(n) horiz(n, 6, 10, 0) end
|
|
draw[2] = function(n) horiz(n, 6, 10, 4) end
|
|
draw[3] = function(n) diagd(n, 6, 10, 0) end
|
|
draw[4] = function(n) diagu(n, 6, 10, 4) end
|
|
draw[5] = function(n) draw[1](n) draw[4](n) end
|
|
draw[6] = function(n) verti(n, 0, 4, 10) end
|
|
draw[7] = function(n) draw[1](n) draw[6](n) end
|
|
draw[8] = function(n) draw[2](n) draw[6](n) end
|
|
draw[9] = function(n) draw[1](n) draw[8](n) end
|
|
|
|
draw[10] = function(n) horiz(n, 0, 4, 0) end
|
|
draw[20] = function(n) horiz(n, 0, 4, 4) end
|
|
draw[30] = function(n) diagu(n, 0, 4, 4) end
|
|
draw[40] = function(n) diagd(n, 0, 4, 0) end
|
|
draw[50] = function(n) draw[10](n) draw[40](n) end
|
|
draw[60] = function(n) verti(n, 0, 4, 0) end
|
|
draw[70] = function(n) draw[10](n) draw[60](n) end
|
|
draw[80] = function(n) draw[20](n) draw[60](n) end
|
|
draw[90] = function(n) draw[10](n) draw[80](n) end
|
|
|
|
draw[100] = function(n) horiz(n, 6, 10, 14) end
|
|
draw[200] = function(n) horiz(n, 6, 10, 10) end
|
|
draw[300] = function(n) diagu(n, 6, 10, 14) end
|
|
draw[400] = function(n) diagd(n, 6, 10, 10) end
|
|
draw[500] = function(n) draw[100](n) draw[400](n) end
|
|
draw[600] = function(n) verti(n, 10, 14, 10) end
|
|
draw[700] = function(n) draw[100](n) draw[600](n) end
|
|
draw[800] = function(n) draw[200](n) draw[600](n) end
|
|
draw[900] = function(n) draw[100](n) draw[800](n) end
|
|
|
|
draw[1000] = function(n) horiz(n, 0, 4, 14) end
|
|
draw[2000] = function(n) horiz(n, 0, 4, 10) end
|
|
draw[3000] = function(n) diagd(n, 0, 4, 10) end
|
|
draw[4000] = function(n) diagu(n, 0, 4, 14) end
|
|
draw[5000] = function(n) draw[1000](n) draw[4000](n) end
|
|
draw[6000] = function(n) verti(n, 10, 14, 0) end
|
|
draw[7000] = function(n) draw[1000](n) draw[6000](n) end
|
|
draw[8000] = function(n) draw[2000](n) draw[6000](n) end
|
|
draw[9000] = function(n) draw[1000](n) draw[8000](n) end
|
|
|
|
return draw
|
|
end
|
|
|
|
function printNumeral(n)
|
|
for i,v in pairs(n) do
|
|
for j,w in pairs(v) do
|
|
io.write(w .. " ")
|
|
end
|
|
print()
|
|
end
|
|
print()
|
|
end
|
|
|
|
function main()
|
|
local draw = initDraw()
|
|
for i,number in pairs({0, 1, 20, 300, 4000, 5555, 6789, 9999}) do
|
|
local n = initN()
|
|
print(number..":")
|
|
local thousands = math.floor(number / 1000)
|
|
number = number % 1000
|
|
local hundreds = math.floor(number / 100)
|
|
number = number % 100
|
|
local tens = math.floor(number / 10)
|
|
local ones = number % 10
|
|
if thousands > 0 then
|
|
draw[thousands * 1000](n)
|
|
end
|
|
if hundreds > 0 then
|
|
draw[hundreds * 100](n)
|
|
end
|
|
if tens > 0 then
|
|
draw[tens * 10](n)
|
|
end
|
|
if ones > 0 then
|
|
draw[ones](n)
|
|
end
|
|
printNumeral(n)
|
|
end
|
|
end
|
|
|
|
main()
|