; 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)