Source of Nothingness - xyzzy lisp : シャッフル

* xyzzy lisp : シャッフル

(defun nswap (l x y)
  (rotatef (car (nthcdr x l)) (car (nthcdr y l)))
  l)

(defun nshuffle (l)
  (do ((i (length l) (1- i)))
      ((>= 1 i))
    (setq l (nswap l (1- i) (random i))))
  l)
元のデータを直接いじっていくほうが分かりやすくないッスか?
ってことでこんな。
nswapは関数にする必要は無いけど意味が分かりやすいように。

update : 2007-04-12 (Thu) 05:46:48