2951.rkt 584 B

1234567891011121314151617181920212223242526
  1. #lang racket
  2. (define/contract (find-peaks mountain)
  3. (-> (listof exact-integer?) (listof exact-integer?))
  4. (let _go ([i 1] [prev (car mountain)] [cur (cdr mountain)] [res '()])
  5. (if (= 1 (length cur)) res
  6. (let ([s (car cur)] [t (cadr cur)])
  7. (_go (+ i 1) s (cdr cur) (append res (if (and (> s prev) (> s t)) (cons i '()) '())))
  8. )
  9. )
  10. )
  11. )
  12. (define (main)
  13. (define (r mountain exp)
  14. (printf
  15. "(find-peaks ~a) = ~a | Exp: ~a\n"
  16. mountain (find-peaks mountain) exp
  17. )
  18. )
  19. (r '(2 4 4) '())
  20. (r '(1 4 3 8 5) '(1 3))
  21. )
  22. (main)