How to resolve the algorithm Pascal matrix generation step by step in the Nim programming language
How to resolve the algorithm Pascal matrix generation step by step in the Nim programming language
Table of Contents
Problem Statement
A pascal matrix is a two-dimensional square matrix holding numbers from Pascal's triangle, also known as binomial coefficients and which can be shown as nCr. Shown below are truncated 5-by-5 matrices M[i, j] for i,j in range 0..4. A Pascal upper-triangular matrix that is populated with jCi: A Pascal lower-triangular matrix that is populated with iCj (the transpose of the upper-triangular matrix): A Pascal symmetric matrix that is populated with i+jCi:
Write functions capable of generating each of the three forms of n-by-n matrices. Use those functions to display upper, lower, and symmetric Pascal 5-by-5 matrices on this page. The output should distinguish between different matrices and the rows of each matrix (no showing a list of 25 numbers assuming the reader should split it into rows).
The Cholesky decomposition of a Pascal symmetric matrix is the Pascal lower-triangle matrix of the same size.
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Pascal matrix generation step by step in the Nim programming language
Source code in the nim programming language
import math, sequtils, strutils
type SquareMatrix = seq[seq[Natural]]
func newSquareMatrix(n: Positive): SquareMatrix =
## Create a square matrix.
newSeqWith(n, newSeq[Natural](n))
func pascalUpperTriangular(n: Positive): SquareMatrix =
## Create an upper Pascal matrix.
result = newSquareMatrix(n)
for i in 0..<n:
for j in i..<n:
result[i][j] = binom(j, i)
func pascalLowerTriangular(n: Positive): SquareMatrix =
## Create a lower Pascal matrix.
result = newSquareMatrix(n)
for i in 0..<n:
for j in i..<n:
result[j][i] = binom(j, i)
func pascalSymmetric(n: Positive): SquareMatrix =
## Create a symmetric Pascal matrix.
result = newSquareMatrix(n)
for i in 0..<n:
for j in 0..<n:
result[i][j] = binom(i + j, i)
proc print(m: SquareMatrix) =
## Print a square matrix.
let matMax = max(m.mapIt(max(it)))
let length = ($matMax).len
for i in 0..m.high:
echo "| ", m[i].mapIt(($it).align(length)).join(" "), " |"
echo "Upper:"
print pascalUpperTriangular(5)
echo "\nLower:"
print pascalLowerTriangular(5)
echo "\nSymmetric:"
print pascalSymmetric(5)
You may also check:How to resolve the algorithm Cumulative standard deviation step by step in the Ada programming language
You may also check:How to resolve the algorithm Quine step by step in the ooRexx programming language
You may also check:How to resolve the algorithm Closest-pair problem step by step in the IS-BASIC programming language
You may also check:How to resolve the algorithm Make directory path step by step in the Python programming language
You may also check:How to resolve the algorithm Arbitrary-precision integers (included) step by step in the Seed7 programming language