all tasks
This commit is contained in:
parent
b83f433714
commit
68f8f3e56b
14735 changed files with 178959 additions and 0 deletions
|
|
@ -0,0 +1,46 @@
|
|||
MODULE Bogo EXPORTS Main;
|
||||
|
||||
IMPORT IO, Fmt, Random;
|
||||
|
||||
VAR a := ARRAY [1..5] OF INTEGER {1, 2, 3, 4, 5};
|
||||
count := 0;
|
||||
|
||||
PROCEDURE Shuffle(VAR a: ARRAY OF INTEGER) =
|
||||
VAR temp: INTEGER;
|
||||
BEGIN
|
||||
WITH rand = NEW(Random.Default).init() DO
|
||||
FOR i := FIRST(a) TO LAST(a) - 1 DO
|
||||
WITH j = rand.integer(i, LAST(a)) DO
|
||||
temp := a[i];
|
||||
a[i] := a[j];
|
||||
a[j] := temp;
|
||||
END;
|
||||
END;
|
||||
END;
|
||||
END Shuffle;
|
||||
|
||||
PROCEDURE Sorted(VAR a: ARRAY OF INTEGER): BOOLEAN =
|
||||
BEGIN
|
||||
IF NUMBER(a) <= 1 THEN
|
||||
RETURN TRUE;
|
||||
END;
|
||||
FOR i := FIRST(a) + 1 TO LAST(a) DO
|
||||
IF (a[i] < a[i - 1]) THEN
|
||||
RETURN FALSE;
|
||||
END;
|
||||
END;
|
||||
RETURN TRUE;
|
||||
END Sorted;
|
||||
|
||||
BEGIN
|
||||
Shuffle(a);
|
||||
WHILE NOT Sorted(a) DO
|
||||
Shuffle(a);
|
||||
INC(count);
|
||||
END;
|
||||
FOR i := FIRST(a) TO LAST(a) DO
|
||||
IO.PutInt(a[i]);
|
||||
IO.Put(" ");
|
||||
END;
|
||||
IO.Put("\nRequired " & Fmt.Int(count) & " shuffles\n");
|
||||
END Bogo.
|
||||
Loading…
Add table
Add a link
Reference in a new issue