Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
16
Task/Knuth-shuffle/Racket/knuth-shuffle.rkt
Normal file
16
Task/Knuth-shuffle/Racket/knuth-shuffle.rkt
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#lang racket
|
||||
|
||||
(define (swap! vec i j)
|
||||
(let ([tmp (vector-ref vec i)])
|
||||
(vector-set! vec i (vector-ref vec j))
|
||||
(vector-set! vec j tmp)))
|
||||
|
||||
(define (knuth-shuffle x)
|
||||
(if (list? x)
|
||||
(vector->list (knuth-shuffle (list->vector x)))
|
||||
(begin (for ([i (in-range (sub1 (vector-length x)) 0 -1)])
|
||||
(define r (random (+ i 1)))
|
||||
(swap! x i r))
|
||||
x)))
|
||||
|
||||
(knuth-shuffle '(1 2 3 4))
|
||||
Loading…
Add table
Add a link
Reference in a new issue