Waarschijnlijk heb je ooit wel al eens gehoord van de driehoek van Pascal. Deze driehoek wordt op de volgende manier opgebouwd. Helemaal bovenaan schrijf je het getal 1. De volgende rij van de driehoek wordt telkens gevormd door op elke positie de som van de twee bovenliggende getallen te schrijven. Indien het getal linksboven of rechtsboven ontbreekt, dan vervang je het door een denkbeeldige nul. Hieronder tonen we alvast hoe de eerste vijf rijen van de driehoek opgebouwd worden.

driehoek van Pascal
driehoek van Pascal

Weinigen weten echter dat we eigenlijk zouden moeten spreken van het vierkant van Pascal. Blaise Pascal (1623-1662) — de Franse wiskundige naar wie de driehoek vernoemd is — rangschikte de getallen immers zelf in de vorm van een vierkant. De constructie van het vierkant verloopt analoog aan deze van de driehoek. Kies een getal $$n \in \mathbb{N}_0$$. Vul alle posities op de eerste rij en de eerste kolom op met het getal $$n$$. Doorloop daarna de overige cellen van links naar rechts en van boven naar onder, en vul elke cel met de som van de getallen in de twee naburige cellen links en boven. Hieronder tonen we het vierkant van Pascal met vier rijen en vier kolommen, waarbij $$n = 1$$.

vierkant van Pascal

Een eigenschap van het vierkant (resp. de driehoek) van Pascal is dat elk getal aangeeft hoeveel verschillende paden je kan volgen vanaf de cel linksboven het vierkant (resp. de cel bovenaan de driehoek) naar de cel waarin het getal staat, als je enkel naar rechts en naar beneden (resp. naar linksonder en naar rechtsonder) mag bewegen. In het bovenstaande vierkant kan je bijvoorbeeld de cel met het getal 4 op de tweede rij bereiken op vier mogelijke manieren: 111–4, 11–3–4, 1–2–3–4 en 1–2–3–4.

Opgave

Voorbeeld

>>> vierkant(3)
[[1, 1, 1], [1, 2, 3], [1, 3, 6]]
>>> vierkant(3, 100)
[[100, 100, 100], [100, 200, 300], [100, 300, 600]]
>>> vierkant(4)
[[1, 1, 1, 1], [1, 2, 3, 4], [1, 3, 6, 10], [1, 4, 10, 20]]

>>> print(paden(3))
 1 1 1
 1 2 3
 1 3 6
>>> print(paden(3, 100))
 100 100 100
 100 200 300
 100 300 600
>>> print(paden(4))
  1  1  1  1
  1  2  3  4
  1  3  6 10
  1  4 10 20
>>> print(paden(6))
   1   1   1   1   1   1
   1   2   3   4   5   6
   1   3   6  10  15  21
   1   4  10  20  35  56
   1   5  15  35  70 126
   1   6  21  56 126 252
>>> print(paden(8))
	1    1    1    1    1    1    1    1
	1    2    3    4    5    6    7    8
	1    3    6   10   15   21   28   36
	1    4   10   20   35   56   84  120
	1    5   15   35   70  126  210  330
	1    6   21   56  126  252  462  792
	1    7   28   84  210  462  924 1716
	1    8   36  120  330  792 1716 3432
>>> print(paden(10))
	 1     1     1     1     1     1     1     1     1     1
	 1     2     3     4     5     6     7     8     9    10
	 1     3     6    10    15    21    28    36    45    55
	 1     4    10    20    35    56    84   120   165   220
	 1     5    15    35    70   126   210   330   495   715
	 1     6    21    56   126   252   462   792  1287  2002
	 1     7    28    84   210   462   924  1716  3003  5005
	 1     8    36   120   330   792  1716  3432  6435 11440
	 1     9    45   165   495  1287  3003  6435 12870 24310
	 1    10    55   220   715  2002  5005 11440 24310 48620