Nombres de Delannoy
Dans une grille de taille \(n×m\), on souhaite compter tous les chemins allant du coin inférieur gauche (au Sud-Ouest) vers le coin supérieur droit (au Nord-Est).
Les seuls mouvements autorisés sont :
- ↑ Aller au Nord d'une unité.
- → Aller à l'Est d'une unité.
- ↗ Aller au Nord-Est en diagonale, sur le prochain nœud.
Écrire une fonction delannoy
qui prend en paramètres deux entiers n
et m
et renvoie le nombre de chemins allant de \((0, 0)\) jusqu'à \((n, m)\).
Pour ce faire, on remarquera :
-
Si
n
oum
est nul,- alors le seul chemin est en ligne droite, la réponse est
1
,
- alors le seul chemin est en ligne droite, la réponse est
-
sinon :
-
n
etm
sont non nuls et les chemins qui vont en(n, m)
se répartissent en trois catégories :📋 Texte- ceux qui venaient de `(n - 1, m )`, - ceux qui venaient de `(n , m - 1)`, - ceux qui venaient de `(n - 1, m - 1)`,
- ces trois catégories sont distinctes et se comptent bien par récursivité.
-
On utilisera un dictionnaire pour mémoriser les résultats intermédiaires.
Exemples
>>> delannoy(3, 3)
63
>>> delannoy(2, 1)
5
Compléter le code :
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
.128013ben,49vi+[3mo5_tPhklpwf(: cga=ry0S6]-u/72)s18d050U0c0q0D0i0u0R0A0B0u0D0R0R0E010q0i0v010406050R0M0m0m0D0F0G040I0n0u0M0/0n0d050N0_0{0}0 0@0v04051f181i0N1f0@0U0i0h0%0)0+0-0s0i0C0s0u1w0s0q0=050Y0b0u0c1r0*0,011v1x1z1x0q1F1H1D0q0F1g0q0s0%120R0v0D0d0-0P011J1t010x0!0c0d0D0m0c1D1$1(1-1L1:1H1?1^0=0a0A0r0F0n0v0n0R0i150d0A0W1!0F0F0c0B2d181{0d1g0N1Y2q1V1X1W1E0U1}0-1z0d1=2a1D1o1q0(1K2A0i2C0d0n2G1D0v2j1g2o2q2U0^1%2e2I1.2N0F0|0u0=0A0S2n2Y0?2X1|2!1L2$2(2*0P2-1(2/2o2z012@0D2)040A0l2{2p0@2~2=0-31330A0f372}2Y2 3d2*0o3h393j3b300n2%322*0J3o2:2Z1s2?3t2^340O3y3a3B3c3D3v340T3H3q3J3s3u3e0g3P2;3R3l040S0H3W3A2J3S3E0S2,192.1j2S182G2t0U1X2y3r0B2O1_1g3?1h3;2W3.2|053|0W2T3Q3)0d0=0W0)0d2N0G0p1^0m3h0A3z2 0n0=0E4m4o3r0d0b4d0i2l3h4u3R0;040y0Q3o063p3X3)0t4d0c0x4B3I3)0w2*4R4a2#0x4O4f4h4W4L1.4E0y4%3(2#0=17442p4C3)4E0e4t4S4.044l4;494(1L4E0Q0z3o0A574n4{1L4N040i4Q4 594X520=4+4 4?4|4:2W5a0-4^4`5i3c0=4~5q5v01535u510-0n4U042N0q5D4-1L5G0=2L5L3k4!1(4h4j0c5y3/5r5B0=554 06585*5h5E015c5e5R3r4*4,5S5I5;3R4q040E4s5g5n1L0m0i0=3$5m5!5C605!5O043t5`4@5k5@4v5x6f1.5|5~6l626404665z5-535%2U5)5+6A615w042j0_0u0Y5K6a5A6n6p0-630=3-6y6A576C5.0=0c0#0c6i4D5$566T5*6V4c6E0c6G6I6N016M6K5-6,4e5U0n0G6#6g4F6~5o6;5|0L6;6P3!715j044_6@5M6D5Y45680=4H7d4p0=0j6;6_6Y6{6}675A5?7u6^4/795s0=7c2U5,7e306k7l3r74766r6R5Z7v7j737n7p5T4g6|7A5#707x7G6,5p2.7F7m04757J3R777O7h7Q7b7U4}7S7,7M6Q7Y696S6T6+7V5V4k7~0=0k5l6u7$7z7#2 5t7.4b7I8a8e7j0K7`5 7E826-6/0D6J806U5!5c2j0q0M0F7(2|7*6j046`7W4i858d5=87897P7y5_8M6$7@8g4|7g4=7i040Q8m5(18470c2q2R8+3=1p3@2t2w2r0D1G8.0N3?0@8{0X0Z0#04.
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)