Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
24
Task/Knuth-shuffle/ACL2/knuth-shuffle.acl2
Normal file
24
Task/Knuth-shuffle/ACL2/knuth-shuffle.acl2
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
:set-state-ok t
|
||||
|
||||
(defun array-swap (name array i j)
|
||||
(let ((ai (aref1 name array i))
|
||||
(aj (aref1 name array j)))
|
||||
(aset1 name
|
||||
(aset1 name array j ai)
|
||||
i aj)))
|
||||
|
||||
(defun shuffle-r (name array m state)
|
||||
(if (zp m)
|
||||
(mv array state)
|
||||
(mv-let (i state)
|
||||
(random$ m state)
|
||||
(shuffle-r name
|
||||
(array-swap name array i m)
|
||||
(1- m)
|
||||
state))))
|
||||
|
||||
(defun shuffle (name array state)
|
||||
(shuffle-r name
|
||||
array
|
||||
(1- (first (dimensions name array)))
|
||||
state))
|
||||
Loading…
Add table
Add a link
Reference in a new issue