20 lines
885 B
Plaintext
20 lines
885 B
Plaintext
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]
|