05AB1E , 13 12 bayt
ÝI<ãʒ.øDŸQ}g
Çevrimiçi deneyin!
Cevapların çoğu formül veya yineleme ilişkisini kullanırken, bu basit bir sayma yaklaşımıdır.
Izgaradaki her olası yol, y koordinatlarının listesiyle gösterilir. N segmentleri için toplam (n + 1) puan vardır, ancak birinci ve sonuncusu mutlaka 0'dır, böylece belirtmek için (n-1) puan bırakır.
Ý # range [0..n]
I< # n - 1
ã # cartesian power
Şimdi yolların bir listesi var (henüz ilk ve son 0 dahil değil). Yapım gereği hiçbiri 0'ın altına düşmez. Ancak, bazılarının yasa dışı eğimleri vardır (örneğin, 0'dan 2'ye atlar), bu yüzden onları filtrelememiz gerekir.
ʒ }g # count how many paths satistfy the following condition
0.ø # surround with 0
Q # is equal to
DŸ # its own fluctuating range
Ÿ
olduğu dalgalanan aralığı yerleşik. Eğer bitişik olmayan sayılar çifti varsa, eksik sayıları doldurur (örneğin [0, 2], [0, 1, 2] olur). Yalnızca yasal yollar değiştirilmeyecek.
Yasadışı yamaçları kontrol etmenin belki de daha sezgisel bir yolu olacaktır üαà
(çiftin mutlak farklılıklarının maksimumunun 1'e eşit olduğunu). Ancak, bu düzeltmek için bir ekstra bayta mal olan düz [0, 0, ... 0] yolunu özlüyor.
Son olarak, asıl kodun kullandığını unutmayın. .ø
bu açıklamanın kullanıldığı yeri0.ø
. Yolu 0'larla çevrelemek yerine, örtük girişi, yolun iki kopyasıyla çevreler. Bu, koordinat sistemini baş aşağı ve baş aşağı döndürür, ancak başka türlü eşdeğerdir.