Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
36
Task/Knuth-shuffle/XPL0/knuth-shuffle.xpl0
Normal file
36
Task/Knuth-shuffle/XPL0/knuth-shuffle.xpl0
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
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);
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue