Pascal's triangle: Difference between revisions
Content added Content deleted
Line 3,344: | Line 3,344: | ||
=={{header|Mathematica}}== |
=={{header|Mathematica}}== |
||
<lang Mathematica> |
<lang Mathematica>n=7; |
||
Column[StringReplace[ToString /@ Replace[MatrixExp[SparseArray[ |
|||
{Band[{2,1}] -> Range[n-1]},{n,n}]],{x__,0..}->{x},2] ,{"{"|"}"|","->" "}], Center]</lang> |
{Band[{2,1}] -> Range[n-1]},{n,n}]],{x__,0..}->{x},2] ,{"{"|"}"|","->" "}], Center]</lang> |
||
[[File:MmaPascal.png]] |
[[File:MmaPascal.png]] |
||
A more graphical output with arrows would involve the plotting functionality with Graph[]: |
|||
<lang Mathematica>nmax := 10; |
|||
pascal[nmax_] := Module[ |
|||
{vals = Table[Binomial[n, k], {n, 0, nmax}, {k, 0, n}], |
|||
ids = Table[{n, k}, {n, 0, nmax}, {k, 0, n}], |
|||
labels, left, right, leftright, edgeLabels |
|||
}, |
|||
labels = Flatten[Thread /@ (Thread[ids -> vals]), 1]; |
|||
left = DeleteCases[Flatten[Flatten[ids, 1] /. {n_, k_} /; (n >= k + 1) :> {{n, k + 1} -> {n + 1, k + 1}}, 1], _?NumberQ]; |
|||
right = DeleteCases[Flatten[Flatten[ids, 1] /. {n_, k_} /; (n > k) :> {{n, k} -> {n + 1, k + 1}}, 1], _?NumberQ]; |
|||
leftright = DeleteCases[left \[Union] right, _ -> {b_, _} /; b > nmax]; |
|||
edgeLabels = (# -> Style["+", Medium] & /@ leftright); |
|||
Graph[Flatten[ids, 1], leftright |
|||
, VertexLabels -> MapAt[Placed[#, Center] &, labels, {All, 2}] |
|||
, GraphLayout -> "SpringEmbedding" |
|||
, VertexSize -> 0.8, EdgeLabels -> edgeLabels |
|||
, PlotLabel -> "Pascal's Triangle" |
|||
] |
|||
]; |
|||
pascal[nmax] |
|||
</lang> |
|||
=={{header|MATLAB}} / {{header|Octave}}== |
=={{header|MATLAB}} / {{header|Octave}}== |