(defun nshuffle (seq &optional (random-state *random-state*))
(loop for i from 0 to (length seq)
for j from 1 to (length seq)
do (rotatef (elt seq i) (elt seq (random j random-state)))
finally (return seq)))
(defun shuffle (seq &optional (random-state *random-state*))
(nshuffle (copy-seq seq) random-state))
(defmacro define-call-another-function-every-n-times (fn another-fn n new-name)
`(let ((count 0))
(defun ,new-name (&rest args)
(if (zerop (mod (incf count) ,n))
(apply ,another-fn args)
(apply ,fn args)))))
(define-call-another-function-every-n-times #'reverse #'shuffle 10 odai-pt10-989)
(dotimes (n 50)
(format t "~D: ~A~%"
(1+ n)
(odai-pt10-989 "プログラミングのお題スレ Part10")))
KGRlZnVuIG5zaHVmZmxlIChzZXEgJm9wdGlvbmFsIChyYW5kb20tc3RhdGUgKnJhbmRvbS1zdGF0ZSopKQogIChsb29wIGZvciBpIGZyb20gMCB0byAobGVuZ3RoIHNlcSkKICAgICAgICBmb3IgaiBmcm9tIDEgdG8gKGxlbmd0aCBzZXEpCiAgICAgICAgZG8gKHJvdGF0ZWYgKGVsdCBzZXEgaSkgKGVsdCBzZXEgKHJhbmRvbSBqIHJhbmRvbS1zdGF0ZSkpKQogICAgICAgIGZpbmFsbHkgKHJldHVybiBzZXEpKSkKCihkZWZ1biBzaHVmZmxlIChzZXEgJm9wdGlvbmFsIChyYW5kb20tc3RhdGUgKnJhbmRvbS1zdGF0ZSopKQogIChuc2h1ZmZsZSAoY29weS1zZXEgc2VxKSByYW5kb20tc3RhdGUpKQoKKGRlZm1hY3JvIGRlZmluZS1jYWxsLWFub3RoZXItZnVuY3Rpb24tZXZlcnktbi10aW1lcyAoZm4gYW5vdGhlci1mbiBuIG5ldy1uYW1lKQogIGAobGV0ICgoY291bnQgMCkpCiAgICAgKGRlZnVuICxuZXctbmFtZSAoJnJlc3QgYXJncykKICAgICAgIChpZiAoemVyb3AgKG1vZCAoaW5jZiBjb3VudCkgLG4pKQogICAgICAgICAgIChhcHBseSAsYW5vdGhlci1mbiBhcmdzKQogICAgICAgICAgIChhcHBseSAsZm4gYXJncykpKSkpCgooZGVmaW5lLWNhbGwtYW5vdGhlci1mdW5jdGlvbi1ldmVyeS1uLXRpbWVzICMncmV2ZXJzZSAjJ3NodWZmbGUgMTAgb2RhaS1wdDEwLTk4OSkKCihkb3RpbWVzIChuIDUwKQogIChmb3JtYXQgdCAifkQ6IH5BfiUiCiAgICAgICAgICAoMSsgbikKICAgICAgICAgIChvZGFpLXB0MTAtOTg5ICLjg5fjg63jgrDjg6njg5/jg7PjgrDjga7jgYrpoYzjgrnjg6wgUGFydDEwIikpKQo=