Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,20 @@
|
|||
(defun longest-increasing-subseq (list)
|
||||
(let ((subseqs nil))
|
||||
(dolist (item list)
|
||||
(let ((longest-so-far (longest-list-in-lists (remove-if-not #'(lambda (l) (> item (car l))) subseqs))))
|
||||
(push (cons item longest-so-far) subseqs)))
|
||||
(reverse (longest-list-in-lists subseqs))))
|
||||
|
||||
(defun longest-list-in-lists (lists)
|
||||
(let ((longest nil)
|
||||
(longest-len 0))
|
||||
(dolist (list lists)
|
||||
(let ((len (length list)))
|
||||
(when (> len longest-len)
|
||||
(setf longest list
|
||||
longest-len len))))
|
||||
longest))
|
||||
|
||||
(dolist (l (list (list 3 2 6 4 5 1)
|
||||
(list 0 8 4 12 2 10 6 14 1 9 5 13 3 11 7 15)))
|
||||
(format t "~A~%" (longest-increasing-subseq l))))
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
(defun lis-patience-sort (input-list)
|
||||
(let ((piles nil))
|
||||
(dolist (item input-list)
|
||||
(setf piles (insert-item item piles)))
|
||||
(reverse (caar (last piles)))))
|
||||
|
||||
(defun insert-item (item piles)
|
||||
(let ((not-found t))
|
||||
(loop
|
||||
while not-found
|
||||
for pile in piles
|
||||
and prev = nil then pile
|
||||
and i from 0
|
||||
do (when (<= item (caar pile))
|
||||
(setf (elt piles i) (push (cons item (car prev)) (elt piles i))
|
||||
not-found nil)))
|
||||
(if not-found
|
||||
(append piles (list (list (cons item (caar (last piles))))))
|
||||
piles)))
|
||||
|
||||
(dolist (l (list (list 3 2 6 4 5 1)
|
||||
(list 0 8 4 12 2 10 6 14 1 9 5 13 3 11 7 15)))
|
||||
(format t "~A~%" (lis-patience-sort l)))
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
(defun insert-item (item piles)
|
||||
(multiple-value-bind
|
||||
(i prev)
|
||||
(do* ((prev nil (car x))
|
||||
(x piles (cdr x))
|
||||
(i 0 (1+ i)))
|
||||
((or (null x) (<= item (caaar x))) (values i prev)))
|
||||
(if (= i (length piles))
|
||||
(append piles (list (list (cons item (caar (last piles))))))
|
||||
(progn (push (cons item (car prev)) (elt piles i))
|
||||
piles))))
|
||||
|
||||
(defun longest-inc-seq (input)
|
||||
(do* ((piles nil (insert-item (car x) piles))
|
||||
(x input (cdr x)))
|
||||
((null x) (reverse (caar (last piles))))))
|
||||
|
||||
(dolist (l (list (list 3 2 6 4 5 1)
|
||||
(list 0 8 4 12 2 10 6 14 1 9 5 13 3 11 7 15)))
|
||||
(format t "~A~%" (longest-inc-seq l)))
|
||||
Loading…
Add table
Add a link
Reference in a new issue