RosettaCodeData/Task/Knuth-shuffle/Action-/knuth-shuffle.action
2023-07-01 13:44:08 -04:00

43 lines
551 B
Text

PROC PrintTable(INT ARRAY tab BYTE size)
BYTE i
FOR i=0 TO size-1
DO
PrintF("%I ",tab(i))
OD
PutE()
RETURN
PROC KnuthShuffle(INT ARRAY tab BYTE size)
BYTE i,j
INT tmp
i=size-1
WHILE i>0
DO
j=Rand(i+1)
tmp=tab(i)
tab(i)=tab(j)
tab(j)=tmp
i==-1
OD
RETURN
PROC Main()
BYTE i,size=[20]
INT ARRAY tab(size)
FOR i=0 TO size-1
DO
tab(i)=-50+10*i
OD
PrintE("Original data:")
PrintTable(tab,size)
PutE()
KnuthShuffle(tab,size)
PrintE("Shuffled data:")
PrintTable(tab,size)
RETURN