単純選択ソート習作
(defun do-simple-select (&optional (list) (num nil)) (let ((tmp (car list))) (cond ((not num) (do-simple-select (cdr list) tmp)) ((not tmp) (cons nil num)) ((not (cdr list)) (if (> num tmp) (cons (list num) tmp) (cons (list tmp) num))) (t (progn (if (> num tmp) (setf tt tmp tmp num num tt)) (setf t1 (do-simple-select (cdr list) num) t-num (cdr t1) t-lst (car t1)) (cons (cons tmp t-lst) t-num)))))) (defun simple-select-sort (list) (let ((ret-list)) (dotimes (x (length list) ret-list) (setf my-list (do-simple-select list) ret-list (append ret-list (list (cdr my-list))) list (car my-list))))) ; 結果 ; * (simple-select-sort '(3 1 2 5 4 6)) ; ; (1 2 3 4 5 6) ; *
condの場合分けがいまいちかっこ悪い。もっといい書き方があるのかもしれないけど、思い付かない。