How to resolve the algorithm Knuth shuffle step by step in the XPL0 programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Knuth shuffle step by step in the XPL0 programming language

Table of Contents

Problem Statement

The   Knuth shuffle   (a.k.a. the Fisher-Yates shuffle)   is an algorithm for randomly shuffling the elements of an array.

Implement the Knuth shuffle for an integer array (or, if possible, an array of any type).

Given an array items with indices ranging from 0 to last, the algorithm can be defined as follows (pseudo-code):

(These are listed here just for your convenience; no need to demonstrate them on the page.)

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Knuth shuffle step by step in the XPL0 programming language

Source code in the xpl0 programming language

proc Shuffle(Array, Items, BytesPerItem);
int  Array, Items, BytesPerItem;
int  I, J;
char Temp(8);
[for I:= Items-1 downto 1 do
    [J:= Ran(I+1);      \range [0..I]
    CopyMem(Temp, Array+I*BytesPerItem, BytesPerItem);
    CopyMem(Array+I*BytesPerItem, Array+J*BytesPerItem, BytesPerItem);
    CopyMem(Array+J*BytesPerItem, Temp, BytesPerItem);
    ];
];

string 0;       \use zero-terminated strings
int A;  char B;  real C;
int I;
[A:= [1, 2, 3, 4, 5];
Shuffle(A, 5, 4 \bytes per int\);
for I:= 0 to 5-1 do
    [IntOut(0, A(I));  ChOut(0, ^ )];
CrLf(0);
B:= "12345";
Shuffle(B, 5, 1 \byte per char\);
for I:= 0 to 5-1 do
    [ChOut(0, B(I));  ChOut(0, ^ )];
CrLf(0);
C:= [1., 2., 3., 4., 5.];
Shuffle(addr C(0), 5, 8 \bytes per real\);
for I:= 0 to 5-1 do
    [RlOut(0, C(I));  ChOut(0, ^ )];
CrLf(0);
A:= [10];
Shuffle(A, 1, 4 \bytes per int\);
for I:= 0 to 1-1 do
    [IntOut(0, A(I));  ChOut(0, ^ )];
CrLf(0);
]

  

You may also check:How to resolve the algorithm FASTA format step by step in the C programming language
You may also check:How to resolve the algorithm Variables step by step in the ALGOL 68 programming language
You may also check:How to resolve the algorithm Tokenize a string step by step in the Objective-C programming language
You may also check:How to resolve the algorithm Sum and product of an array step by step in the Clean programming language
You may also check:How to resolve the algorithm Abbreviations, automatic step by step in the AWK programming language