Post Reply 
Randomize a List problem
09-16-2020, 11:00 PM (This post was last modified: 09-17-2020 05:07 PM by David Hayden.)
Post: #19
RE: Randomize a List problem
[ Edit: fixed some typos that Albert Chan pointed out in a private message. Thanks Albert! ]
You can swap level 1 with level N with
Code:
N PICK SWAP N UNPICK
You can use this to swap levels M and N with
Code:
           N PICK SWAP N UNPICK @ swap level n and level 1
           M PICK SWAP M UNPICK @ swap level m and level 1
           N PICK SWAP N UNPICK @ swap level n and level 1
But that won't work if N = M, so it needs to be
Code:
IF N M < THEN  @ EDIT: < should be ≠
           N PICK SWAP N UNPICK @ swap level n and level 1
           M PICK SWAP M UNPICK @ swap level m and level 1
           N PICK SWAP N UNPICK @ swap level n and level 1
           END

With that, you can efficiently sort a list with [ EDIT: "sort" should be "shuffle" ]
Code:
«
LIST➝ 
 @ Subroutine to swap level n with level m
 « ➝ N M « IF N M ‹ THEN
           N PICK SWAP N UNPICK @ swap level n and level 1
           M PICK SWAP M UNPICK @ swap level m and level 1
           N PICK SWAP N UNPICK @ swap level n and level 1
           END
           » »
 ➝ t nmswap
  « t 2. FOR n
    n RAND * CEIL
    n nmswap EVAL
    -1. STEP
    t ➝LIST
  »
»
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
Randomize a List problem - Hlib - 09-14-2020, 04:38 PM
RE: Randomize a List problem - John Keith - 09-14-2020, 06:08 PM
RE: Randomize a List problem - Albert Chan - 09-14-2020, 07:32 PM
RE: Randomize a List problem - Hlib - 09-14-2020, 08:51 PM
RE: Randomize a List problem - Albert Chan - 09-14-2020, 11:41 PM
RE: Randomize a List problem - Werner - 09-15-2020, 06:41 AM
RE: Randomize a List problem - Werner - 09-15-2020, 09:47 AM
RE: Randomize a List problem - Albert Chan - 09-15-2020, 04:36 PM
RE: Randomize a List problem - ijabbott - 09-15-2020, 06:39 PM
RE: Randomize a List problem - John Keith - 09-15-2020, 08:56 PM
RE: Randomize a List problem - Albert Chan - 09-15-2020, 09:34 PM
RE: Randomize a List problem - Werner - 09-16-2020, 06:43 AM
RE: Randomize a List problem - John Keith - 09-16-2020, 11:51 AM
RE: Randomize a List problem - Albert Chan - 09-15-2020, 01:00 AM
RE: Randomize a List problem - Wes Loewer - 09-15-2020, 04:10 AM
RE: Randomize a List problem - John Keith - 09-15-2020, 01:42 PM
RE: Randomize a List problem - Hlib - 09-15-2020, 03:57 PM
RE: Randomize a List problem - Albert Chan - 09-15-2020, 07:53 PM
RE: Randomize a List problem - David Hayden - 09-16-2020 11:00 PM
RE: Randomize a List problem - Albert Chan - 09-17-2020, 12:11 PM
RE: Randomize a List problem - Hlib - 09-17-2020, 09:36 AM
RE: Randomize a List problem - John Keith - 09-17-2020, 12:20 PM
RE: Randomize a List problem - Albert Chan - 09-17-2020, 01:42 PM
RE: Randomize a List problem - John Keith - 09-17-2020, 08:21 PM
RE: Randomize a List problem - John Keith - 09-18-2020, 03:31 PM
RE: Randomize a List problem - Albert Chan - 09-18-2020, 10:19 PM
RE: Randomize a List problem - Albert Chan - 09-19-2020, 12:29 AM
RE: Randomize a List problem - pier4r - 10-13-2020, 07:13 PM
RE: Randomize a List problem - DavidM - 10-14-2020, 04:12 AM
RE: Randomize a List problem - Albert Chan - 10-15-2020, 04:43 PM
RE: Randomize a List problem - DavidM - 10-15-2020, 06:24 PM
RE: Randomize a List problem - pier4r - 10-14-2020, 06:55 PM
RE: Randomize a List problem - DavidM - 04-26-2024, 03:17 PM



User(s) browsing this thread: