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 件のコメント:
コメントを投稿