def qlikesort(data): if len(data) < 1: return data smaller = [x for x in data[1:] if x < data[0]] larger = [x for x in data[1:] if x >= data[0]] return qlikesort(smaller) +[data[0]]+ qlikesort(larger)
pythonでもそんなに長くならないですね。
CLISPでも動くように、一対一で書き直してみると、
(defun qlike-sort (s) (if (null s) nil (let ((smaller (remove-if (lambda (x) (>= x (car s))) (cdr s))) (larger (remove-if (lambda (x) (< x (car s))) (cdr s)))) (concatenate 'list (qlike-sort smaller) (list (car s)) (qlike-sort larger)))))
当たり前ですが、あまり変わらないですね。
0 件のコメント:
コメントを投稿