; jump
(define (jump xs)
(let loop ((reachable 0) (xs xs))
(if (null? xs) #t
(let ((next (max (- reachable 1) (car xs))))
(if (zero? next) #f (loop next (cdr xs)))))))
(display (jump '(1 3 3 0 0 2 0 4 1 3 0))) (newline)
(display (jump '(2 0 3 5 0 0 3 0 0 6 3))) (newline)
(display (jump '(3 1 4 3 5 0 0 0 3 1 0))) (newline)
(display (jump '(4 4 0 3 0 1 2 2 1 0 0))) (newline)
(display (jump '(3 2 0 1 4 3 1 0 0 0 0))) (newline)
(display (jump '(5 2 0 0 1 0 6 0 0 2 9))) (newline)
OyBqdW1wCgooZGVmaW5lIChqdW1wIHhzKQogIChsZXQgbG9vcCAoKHJlYWNoYWJsZSAwKSAoeHMgeHMpKQogICAgKGlmIChudWxsPyB4cykgI3QKICAgICAgKGxldCAoKG5leHQgKG1heCAoLSByZWFjaGFibGUgMSkgKGNhciB4cykpKSkKICAgICAgICAoaWYgKHplcm8/IG5leHQpICNmIChsb29wIG5leHQgKGNkciB4cykpKSkpKSkKCihkaXNwbGF5IChqdW1wICcoMSAzIDMgMCAwIDIgMCA0IDEgMyAwKSkpIChuZXdsaW5lKQooZGlzcGxheSAoanVtcCAnKDIgMCAzIDUgMCAwIDMgMCAwIDYgMykpKSAobmV3bGluZSkKKGRpc3BsYXkgKGp1bXAgJygzIDEgNCAzIDUgMCAwIDAgMyAxIDApKSkgKG5ld2xpbmUpCihkaXNwbGF5IChqdW1wICcoNCA0IDAgMyAwIDEgMiAyIDEgMCAwKSkpIChuZXdsaW5lKQooZGlzcGxheSAoanVtcCAnKDMgMiAwIDEgNCAzIDEgMCAwIDAgMCkpKSAobmV3bGluZSkKKGRpc3BsYXkgKGp1bXAgJyg1IDIgMCAwIDEgMCA2IDAgMCAyIDkpKSkgKG5ld2xpbmUp