Pascal matrix generation: Difference between revisions

(→‎{{header|PARI/GP}}: Correct symmetric)
Line 3,384:
</pre>
 
=={{header|VBA}}==
{{trans|Phix}}
<lang vb>Option Base 1
Private Function pascal_upper(n As Integer)
Dim res As Variant: ReDim res(n, n)
For j = 1 To n
res(1, j) = 1
Next j
For i = 2 To n
res(i, 1) = 0
For j = 2 To i
res(j, i) = res(j, i - 1) + res(j - 1, i - 1)
Next j
For j = i + 1 To n
res(j, i) = 0
Next j
Next i
pascal_upper = res
End Function
Private Function pascal_symmetric(n As Integer)
Dim res As Variant: ReDim res(n, n)
For i = 1 To n
res(i, 1) = 1
res(1, i) = 1
Next i
For i = 2 To n
For j = 2 To n
res(i, j) = res(i - 1, j) + res(i, j - 1)
Next j
Next i
pascal_symmetric = res
End Function
 
Private Sub pp(m As Variant)
For i = 1 To UBound(m)
For j = 1 To UBound(m, 2)
Debug.Print Format(m(i, j), "@@@");
Next j
Debug.Print
Next i
End Sub
 
Public Sub main()
Debug.Print "=== Pascal upper matrix ==="
pp pascal_upper(5)
Debug.Print "=== Pascal lower matrix ==="
pp WorksheetFunction.Transpose(pascal_upper(5))
Debug.Print "=== Pascal symmetrical matrix ==="
pp pascal_symmetric(5)
End Sub</lang>{{out}}
<pre>=== Pascal upper matrix ===
1 1 1 1 1
0 1 2 3 4
0 0 1 3 6
0 0 0 1 4
0 0 0 0 1
=== Pascal lower matrix ===
1 0 0 0 0
1 1 0 0 0
1 2 1 0 0
1 3 3 1 0
1 4 6 4 1
=== Pascal symmetrical matrix ===
1 1 1 1 1
1 2 3 4 5
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70</pre>
=={{header|VBScript}}==
<lang vb>
255

edits