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