; wave sorting
(define (wave-sort-and-twiddle xs)
(let loop ((xs (sort xs <)) (zs (list)))
(cond ((null? xs) (reverse zs))
((null? (cdr xs)) (reverse (cons (car xs) zs)))
(else (loop (cddr xs) (cons (car xs) (cons (cadr xs) zs)))))))
(display (wave-sort-and-twiddle '(8 7 3 10 0 4 13 9 11 2))) (newline)
(define (wave-bubble xs)
(let loop ((xs xs) (dir 1) (zs (list)))
(cond ((null? xs) (reverse zs))
((null? (cdr xs))
(reverse (cons (car xs) zs)))
((positive? (* dir (- (car xs) (cadr xs))))
(loop (cdr xs) (- dir)
(cons (car xs) zs)))
(else (loop (cons (car xs) (cddr xs))
(- dir) (cons (cadr xs) zs))))))
(display (wave-bubble '(8 7 3 10 0 4 13 9 11 2))) (newline)
OyB3YXZlIHNvcnRpbmcKCihkZWZpbmUgKHdhdmUtc29ydC1hbmQtdHdpZGRsZSB4cykKICAobGV0IGxvb3AgKCh4cyAoc29ydCB4cyA8KSkgKHpzIChsaXN0KSkpCiAgICAoY29uZCAoKG51bGw/IHhzKSAocmV2ZXJzZSB6cykpCiAgICAgICAgICAoKG51bGw/IChjZHIgeHMpKSAocmV2ZXJzZSAoY29ucyAoY2FyIHhzKSB6cykpKQogICAgICAgICAgKGVsc2UgKGxvb3AgKGNkZHIgeHMpIChjb25zIChjYXIgeHMpIChjb25zIChjYWRyIHhzKSB6cykpKSkpKSkKCihkaXNwbGF5ICh3YXZlLXNvcnQtYW5kLXR3aWRkbGUgJyg4IDcgMyAxMCAwIDQgMTMgOSAxMSAyKSkpIChuZXdsaW5lKQoKKGRlZmluZSAod2F2ZS1idWJibGUgeHMpCiAgKGxldCBsb29wICgoeHMgeHMpIChkaXIgMSkgKHpzIChsaXN0KSkpCiAgICAoY29uZCAoKG51bGw/IHhzKSAocmV2ZXJzZSB6cykpCiAgICAgICAgICAoKG51bGw/IChjZHIgeHMpKQogICAgICAgICAgICAocmV2ZXJzZSAoY29ucyAoY2FyIHhzKSB6cykpKQogICAgICAgICAgKChwb3NpdGl2ZT8gKCogZGlyICgtIChjYXIgeHMpIChjYWRyIHhzKSkpKQogICAgICAgICAgICAobG9vcCAoY2RyIHhzKSAoLSBkaXIpCiAgICAgICAgICAgICAgICAgIChjb25zIChjYXIgeHMpIHpzKSkpCiAgICAgICAgICAoZWxzZSAobG9vcCAoY29ucyAoY2FyIHhzKSAoY2RkciB4cykpCiAgICAgICAgICAgICAgICAgICAgICAoLSBkaXIpIChjb25zIChjYWRyIHhzKSB6cykpKSkpKQoKKGRpc3BsYXkgKHdhdmUtYnViYmxlICcoOCA3IDMgMTAgMCA0IDEzIDkgMTEgMikpKSAobmV3bGluZSk=