05AB1E , 13 12 byte
ÝI<ãʒ.øDŸQ}g
Cobalah online!
Sementara sebagian besar jawaban menggunakan rumus atau hubungan perulangan, ini adalah pendekatan penghitungan sederhana.
Setiap jalur yang mungkin melalui grid diwakili oleh daftar koordinat y-nya. Untuk n segmen, ada total (n + 1) poin, tetapi yang pertama dan terakhir adalah 0, sehingga meninggalkan (n-1) poin untuk ditentukan.
Ý # range [0..n]
I< # n - 1
ã # cartesian power
Kami sekarang memiliki daftar jalur (belum termasuk awal dan akhir 0). Dengan konstruksi, tidak satu pun dari mereka yang berada di bawah 0. Namun, beberapa dari mereka memiliki lereng ilegal (misalnya melompat dari 0 ke 2), jadi kita perlu menyaringnya.
ʒ }g # count how many paths satistfy the following condition
0.ø # surround with 0
Q # is equal to
DŸ # its own fluctuating range
Ÿ
adalah rentang bawaan yang berfluktuasi . Jika ada pasangan angka yang tidak berdekatan, itu akan mengisi angka yang hilang (mis. [0, 2] menjadi [0, 1, 2]). Hanya jalur hukum yang akan dibiarkan tidak berubah.
Cara yang mungkin lebih intuitif untuk memeriksa lereng ilegal adalah üαà
(menyatakan maksimum perbedaan absolut berpasangan sama dengan 1). Namun, ini melewatkan jalur flat [0, 0, ... 0], yang membutuhkan satu byte tambahan untuk memperbaikinya.
Akhirnya, perhatikan bahwa kode aktual menggunakan .ø
tempat penjelasan ini digunakan 0.ø
. Alih-alih mengelilingi jalan dengan 0s, ini mengelilingi input implisit dengan dua salinan jalur. Ini mengubah sistem koordinat terbalik dan dalam-luar, tetapi sebaliknya setara.