fork download
  1. ; stock prices, fixed
  2.  
  3. (define xs '(100 80 70 65 95 120 150 75 95 100 110 120 90 80 85 90 64))
  4.  
  5. (define (buy-sell xs)
  6. (let loop ((xs (cdr xs)) (lo (car xs)) (hi (car xs))
  7. (min-lo (car xs)) (max-d 0))
  8. (if (null? xs) (values lo hi max-d)
  9. (let* ((min-lo (if (< (car xs) min-lo) (car xs) min-lo))
  10. (d (- (car xs) min-lo)))
  11. (if (< max-d d)
  12. (loop (cdr xs) min-lo (car xs) min-lo d)
  13. (loop (cdr xs) lo hi min-lo max-d))))))
  14.  
  15. (call-with-values
  16. (lambda () (buy-sell xs))
  17. (lambda (lo hi diff)
  18. (display lo) (newline)
  19. (display hi) (newline)
  20. (display diff) (newline)))
Success #stdin #stdout 0.01s 42848KB
stdin
Standard input is empty
stdout
65
150
85