fork download
  1. ; wave sorting
  2.  
  3. (define (wave-sort-and-twiddle xs)
  4. (let loop ((xs (sort xs <)) (zs (list)))
  5. (cond ((null? xs) (reverse zs))
  6. ((null? (cdr xs)) (reverse (cons (car xs) zs)))
  7. (else (loop (cddr xs) (cons (car xs) (cons (cadr xs) zs)))))))
  8.  
  9. (display (wave-sort-and-twiddle '(8 7 3 10 0 4 13 9 11 2))) (newline)
  10.  
  11. (define (wave-bubble xs)
  12. (let loop ((xs xs) (dir 1) (zs (list)))
  13. (cond ((null? xs) (reverse zs))
  14. ((null? (cdr xs))
  15. (reverse (cons (car xs) zs)))
  16. ((positive? (* dir (- (car xs) (cadr xs))))
  17. (loop (cdr xs) (- dir)
  18. (cons (car xs) zs)))
  19. (else (loop (cons (car xs) (cddr xs))
  20. (- dir) (cons (cadr xs) zs))))))
  21.  
  22. (display (wave-bubble '(8 7 3 10 0 4 13 9 11 2))) (newline)
Success #stdin #stdout 0.03s 8616KB
stdin
Standard input is empty
stdout
(2 0 4 3 8 7 10 9 13 11)
(8 3 10 0 7 4 13 9 11 2)