picrin/etc/R7RS/inputs/scheme.input

42 lines
1.3 KiB
Plaintext
Raw Normal View History

100000
(let ()
(define (sort-list obj pred)
(define (loop l)
(if (and (pair? l) (pair? (cdr l)))
(split l '() '())
l))
(define (split l one two)
(if (pair? l)
(split (cdr l) two (cons (car l) one))
(merge (loop one) (loop two))))
(define (merge one two)
(cond ((null? one) two)
((pred (car two) (car one))
(cons (car two)
(merge (cdr two) one)))
(else
(cons (car one)
(merge (cdr one) two)))))
(loop obj))
(sort-list '("one" "two" "three" "four" "five" "six"
"seven" "eight" "nine" "ten" "eleven" "twelve"
"thirteen" "fourteen" "fifteen" "sixteen"
"seventeen" "eighteen" "nineteen" "twenty"
"twentyone" "twentytwo" "twentythree" "twentyfour"
"twentyfive" "twentysix" "twentyseven" "twentyeight"
"twentynine" "thirty")
string<?))
("eight" "eighteen" "eleven" "fifteen" "five" "four" "fourteen"
"nine" "nineteen" "one" "seven" "seventeen" "six" "sixteen"
"ten" "thirteen" "thirty" "three" "twelve" "twenty" "twentyeight"
"twentyfive" "twentyfour" "twentynine" "twentyone" "twentyseven"
"twentysix" "twentythree" "twentytwo" "two")