; diminishing gap sort
(define (zip . xss) (apply map list xss))
(define xs (list 80 256 144 5 12 134 15 14 121))
(define (gaps xs)
(let ((ys (append (cdr xs) (list 0))))
(zip (map - xs ys) xs)))
(display (gaps (sort xs >))) (newline)
(define (car> xs ys) (> (car xs) (car ys)))
(define (diminishing-gap-sort xs)
(map cadr (sort (gaps (sort xs >)) car>)))
(display (diminishing-gap-sort xs)) (newline)
OyBkaW1pbmlzaGluZyBnYXAgc29ydAoKKGRlZmluZSAoemlwIC4geHNzKSAoYXBwbHkgbWFwIGxpc3QgeHNzKSkKCihkZWZpbmUgeHMgKGxpc3QgODAgMjU2IDE0NCA1IDEyIDEzNCAxNSAxNCAxMjEpKQoKKGRlZmluZSAoZ2FwcyB4cykKICAobGV0ICgoeXMgKGFwcGVuZCAoY2RyIHhzKSAobGlzdCAwKSkpKQogICAgKHppcCAobWFwIC0geHMgeXMpIHhzKSkpCgooZGlzcGxheSAoZ2FwcyAoc29ydCB4cyA+KSkpIChuZXdsaW5lKQoKKGRlZmluZSAoY2FyPiB4cyB5cykgKD4gKGNhciB4cykgKGNhciB5cykpKQoKKGRlZmluZSAoZGltaW5pc2hpbmctZ2FwLXNvcnQgeHMpCiAgKG1hcCBjYWRyIChzb3J0IChnYXBzIChzb3J0IHhzID4pKSBjYXI+KSkpCgooZGlzcGxheSAoZGltaW5pc2hpbmctZ2FwLXNvcnQgeHMpKSAobmV3bGluZSk=