48 lines
1.1 KiB
Lua
48 lines
1.1 KiB
Lua
function factorial (n)
|
|
local f = 1
|
|
for i = 2, n do
|
|
f = f * i
|
|
end
|
|
return f
|
|
end
|
|
|
|
function binomial (n, k)
|
|
if k > n then return 0 end
|
|
return factorial(n) / (factorial(k) * factorial(n - k))
|
|
end
|
|
|
|
function pascalMatrix (form, size)
|
|
local matrix = {}
|
|
for row = 1, size do
|
|
matrix[row] = {}
|
|
for col = 1, size do
|
|
if form == "upper" then
|
|
matrix[row][col] = binomial(col - 1, row - 1)
|
|
end
|
|
if form == "lower" then
|
|
matrix[row][col] = binomial(row - 1, col - 1)
|
|
end
|
|
if form == "symmetric" then
|
|
matrix[row][col] = binomial(row + col - 2, col - 1)
|
|
end
|
|
end
|
|
end
|
|
matrix.form = form:sub(1, 1):upper() .. form:sub(2, -1)
|
|
return matrix
|
|
end
|
|
|
|
function show (mat)
|
|
print(mat.form .. ":")
|
|
for i = 1, #mat do
|
|
for j = 1, #mat[i] do
|
|
io.write(mat[i][j] .. "\t")
|
|
end
|
|
print()
|
|
end
|
|
print()
|
|
end
|
|
|
|
for _, form in pairs({"upper", "lower", "symmetric"}) do
|
|
show(pascalMatrix(form, 5))
|
|
end
|