05AB1E , 13 12 octets
ÝI<ãʒ.øDŸQ}g
Essayez-le en ligne!
Bien que la plupart des réponses utilisent une formule ou une relation de récurrence, il s'agit d'une approche de comptage simple.
Chaque chemin possible à travers la grille est représenté par la liste de ses coordonnées y. Pour n segments, il y a un total de (n + 1) points, mais le premier et le dernier sont nécessairement 0, ce qui laisse (n-1) points à spécifier.
Ý # range [0..n]
I< # n - 1
ã # cartesian power
Nous avons maintenant une liste de chemins (n'incluant pas encore le 0 initial et le 0 final). Par construction, aucun d'entre eux ne descend jamais en dessous de 0. Cependant, certains d'entre eux ont des pentes illégales (par exemple sauter de 0 à 2), nous devons donc les filtrer.
ʒ }g # count how many paths satistfy the following condition
0.ø # surround with 0
Q # is equal to
DŸ # its own fluctuating range
Ÿest la plage de fluctuation intégrée. S'il y a une paire de nombres non adjacents, elle remplira les nombres manquants (par exemple [0, 2] devient [0, 1, 2]). Seuls les chemins légaux resteront inchangés.
Une façon peut-être plus intuitive de vérifier les pentes illégales serait üαà(affirmer que le maximum de différences absolues par paire est égal à 1). Cependant, cela manque le chemin plat [0, 0, ... 0], qui coûte un octet supplémentaire à corriger.
Enfin, notez que le code réel utilise .øoù cette explication utilise 0.ø. Au lieu d'entourer le chemin avec 0, cela entoure l'entrée implicite avec deux copies du chemin. Cela met le système de coordonnées à l'envers et à l'envers, mais est par ailleurs équivalent.