05AB1E , 13 12 byte
ÝI<ãʒ.øDŸQ}g
Provalo online!
Mentre la maggior parte delle risposte utilizza una formula o una relazione di ricorrenza, questo è un semplice approccio di conteggio.
Ogni possibile percorso attraverso la griglia è rappresentato dall'elenco delle sue coordinate y. Per n segmenti, ci sono un totale di (n + 1) punti, ma il primo e l'ultimo sono necessariamente 0, quindi lascia (n-1) punti da specificare.
Ý # range [0..n]
I< # n - 1
ã # cartesian power
Ora abbiamo un elenco di percorsi (non ancora compreso lo 0 iniziale e finale). Per costruzione, nessuno di loro scende mai sotto lo 0. Tuttavia, alcuni di essi hanno pendenze illegali (es. Salta da 0 a 2), quindi dobbiamo filtrarli.
ʒ }g # count how many paths satistfy the following condition
0.ø # surround with 0
Q # is equal to
DŸ # its own fluctuating range
Ÿ
è la gamma fluttuante integrata. Se c'è una coppia di numeri non adiacenti, riempirà i numeri mancanti (ad es. [0, 2] diventa [0, 1, 2]). Solo i percorsi legali rimarranno invariati.
Un modo forse più intuitivo per verificare la presenza di pendenze illegali sarebbe üαà
(affermare che il massimo delle differenze assolute a coppie è uguale a 1). Tuttavia, questo manca il percorso flat [0, 0, ... 0], che costa un byte extra da correggere.
Infine, si noti che il codice effettivo utilizza .ø
dove viene utilizzata questa spiegazione 0.ø
. Invece di circondare il percorso con 0, questo circonda l'input implicito con due copie del percorso. In questo modo il sistema di coordinate viene capovolto e rovesciato, ma per il resto è equivalente.