Name: Anonymous 2009-08-30 15:07
Which do you prefer?
Fibonacci Butt Sort
or
Directed Acyclic Butt Sort
Fibonacci Butt Sort
or
Directed Acyclic Butt Sort
(asdf:oos 'asdf:load-op '#:split-sequence)
(defun wrap-tag (string tag)
(if (null tag)
""
(format nil "[~a]~a[/~a]" tag string tag)))
(defun wrap-tags (string &rest tags)
(labels ((rec (string tags)
(if tags
(rec (wrap-tag string (car tags)) (cdr tags))
string)))
(rec string (reverse tags))))
(defun split-string (s)
(loop for c across s collect c))
(defun bbsort (s &optional acyclic)
(let ((seqs (if acyclic
(mapcan #'(lambda (x) (list x #\Space)) (split-sequence:split-sequence #\Space s))
(split-string s)))
parity)
(wrap-tags
(apply #'concatenate 'string
(mapcar #'(lambda (x)
(if (member x '(#\ "" " ") :test #'equal)
" "
(progn
(setf parity (not parity))
(wrap-tag x (if parity "o" "u")))))
seqs)) "i" "b")))