Best shuffle: Difference between revisions

Content added Content deleted
(→‎{{header|Common Lisp}}: it still reads like a C program)
(→‎{{header|Common Lisp}}: alternative version (incomplete))
Line 984: Line 984:
up: (pu 0)
up: (pu 0)
a: (a 1)</lang>
a: (a 1)</lang>

this alternative version is based on a [http://blog.viridian-project.de/2008/04/06/sequence-shuffling-revisited/ discussion here]
<lang lisp>(defun better-shuffle (seq)
(let ((tagged (mapcar (lambda (x) (cons (random 1.0) x)) (loop for char across seq collect char))))
(coerce (mapcar 'cdr (sort tagged #'> :key 'car)) 'string)))

(map 'list 'shuffle '("abracadabra" "seesaw" "elk" "grrrrrr" "up" "a"))
("rbcarabdaaa" "wassee" "ekl" "rrrrrgr" "up" "a")</lang>


=={{header|D}}==
=={{header|D}}==