Hi Paige,
Here is a suggestion that adapts @dvbridges solution to a related problem. The suggestion assumes that you have a list of numbers that you randomise.
import random
while 1:
choices = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
shuffledList = []
previous = ""
while choices:
tmpList = choices
# if we've already found one element
if previous:
#print(previous)
# find all list elements that are not direct neighbours of the previous element
tmpList = [x for x in tmpList if x != previous-1 and x != previous+1]
#print(tmpList)
# there are no elements left that are not direct neighbours
if not tmpList:
print("\nno valid solution")
break
# choose a random element from the reduced list
newEl = random.choice(tmpList)
# append this element to the new list
shuffledList.append(newEl)
# remove the chosen element from *choices* (not tmpList!)
choices.remove(newEl)
# remember the element for the next iteration
previous = newEl
# if choices is empty (i.e., all elements were successfully moved to shuffledList)
if not choices:
print(shuffledList)
break
To apply the result to your Excel input file, you could follow these instructions. Note that you would then need to choose sequential
as loopType
. If you wanted to, you could create a separate input file for each participant.
Hope this helps.
Jan