Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -1,99 +0,0 @@
|
|||
with Ada.Text_IO, Ada.Numerics.Discrete_Random, Ada.Command_Line;
|
||||
|
||||
procedure Dutch_National_Flag is
|
||||
|
||||
type Colour_Type is (Red, White, Blue);
|
||||
|
||||
Number: Positive range 2 .. Positive'Last :=
|
||||
Positive'Value(Ada.Command_Line.Argument(1));
|
||||
-- no sorting if the Number of balls is less than 2
|
||||
|
||||
type Balls is array(1 .. Number) of Colour_Type;
|
||||
|
||||
function Is_Sorted(B: Balls) return Boolean is
|
||||
-- checks if balls are in order
|
||||
begin
|
||||
for I in Balls'First .. Balls'Last-1 loop
|
||||
if B(I) > B(I+1) then
|
||||
return False;
|
||||
end if;
|
||||
end loop;
|
||||
return True;
|
||||
end Is_Sorted;
|
||||
|
||||
function Random_Balls return Balls is
|
||||
-- generates an array of random balls, ensuring they are not in order
|
||||
package Random_Colour is new Ada.Numerics.Discrete_Random(Colour_Type);
|
||||
Gen: Random_Colour.Generator;
|
||||
B: Balls;
|
||||
begin
|
||||
Random_Colour.Reset(Gen);
|
||||
loop
|
||||
for I in Balls'Range loop
|
||||
B(I) := Random_Colour.Random(Gen);
|
||||
end loop;
|
||||
exit when (not Is_Sorted(B));
|
||||
-- ... ensuring they are not in order
|
||||
end loop;
|
||||
return B;
|
||||
end Random_Balls;
|
||||
|
||||
procedure Print(Message: String; B: Balls) is
|
||||
begin
|
||||
Ada.Text_IO.Put(Message);
|
||||
for I in B'Range loop
|
||||
Ada.Text_IO.Put(Colour_Type'Image(B(I)));
|
||||
if I < B'Last then
|
||||
Ada.Text_IO.Put(", ");
|
||||
else
|
||||
Ada.Text_IO.New_Line;
|
||||
end if;
|
||||
end loop;
|
||||
end Print;
|
||||
|
||||
procedure Sort(Bls: in out Balls) is
|
||||
-- sort Bls in O(1) time
|
||||
|
||||
Cnt: array(Colour_Type) of Natural := (Red => 0, White => 0, Blue => 0);
|
||||
Col: Colour_Type;
|
||||
|
||||
procedure Move_Colour_To_Top(Bls: in out Balls;
|
||||
Colour: Colour_Type;
|
||||
Start: Positive;
|
||||
Count: Natural) is
|
||||
This: Positive := Start;
|
||||
Tmp: Colour_Type;
|
||||
begin
|
||||
for N in Start .. Start+Count-1 loop
|
||||
while Bls(This) /= Colour loop
|
||||
This := This + 1;
|
||||
end loop; -- This is the first index >= N with B(This) = Colour
|
||||
Tmp := Bls(N); Bls(N) := Bls(This); Bls(This) := Tmp; -- swap
|
||||
This := This + 1;
|
||||
end loop;
|
||||
end Move_Colour_To_Top;
|
||||
|
||||
begin
|
||||
for Ball in Balls'Range loop
|
||||
-- count how often each colour is found
|
||||
Col := Bls(Ball);
|
||||
Cnt(Col) := Cnt(Col) + 1;
|
||||
end loop;
|
||||
Move_Colour_To_Top(Bls, Red, Start => 1, Count => Cnt(Red));
|
||||
Move_Colour_To_Top(Bls, White, Start => 1+Cnt(Red), Count => Cnt(White));
|
||||
-- all the remaining balls are blue
|
||||
end Sort;
|
||||
|
||||
A: Balls := Random_Balls;
|
||||
|
||||
begin
|
||||
Print("Original Order: ", A);
|
||||
|
||||
pragma Assert(not Is_Sorted(A)); -- Check if A is unsorted
|
||||
|
||||
Sort(A); -- A = ((Red**Cnt(Red)= & (White**Cnt(White)) & (Blue**Cnt(Blue)))
|
||||
|
||||
pragma Assert(Is_Sorted(A)); -- Check if A is actually sorted
|
||||
|
||||
Print("After Sorting: ", A);
|
||||
end Dutch_National_Flag;
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
#include <Array.au3>
|
||||
Dutch_Flag(50)
|
||||
Func Dutch_Flag($arrayitems)
|
||||
Local $avArray[$arrayitems]
|
||||
For $i = 0 To UBound($avArray) - 1
|
||||
$avArray[$i] = Random(1, 3, 1)
|
||||
Next
|
||||
Local $low = 2, $high = 3, $i = 0
|
||||
Local $arraypos = -1
|
||||
Local $p = UBound($avArray) - 1
|
||||
While $i < $p
|
||||
if $avArray[$i] < $low Then
|
||||
$arraypos += 1
|
||||
_ArraySwap($avArray[$i], $avArray[$arraypos])
|
||||
$i += 1
|
||||
ElseIf $avArray[$i] >= $high Then
|
||||
_ArraySwap($avArray[$i], $avArray[$p])
|
||||
$p -= 1
|
||||
Else
|
||||
$i += 1
|
||||
EndIf
|
||||
WEnd
|
||||
_ArrayDisplay($avArray)
|
||||
EndFunc ;==>Dutch_Flag
|
||||
|
|
@ -1,41 +1,39 @@
|
|||
(phixonline)-->
|
||||
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
|
||||
<span style="color: #008080;">function</span> <span style="color: #000000;">three_way_partition</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">integer</span> <span style="color: #000000;">mid</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #004080;">integer</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">j</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">n</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">while</span> <span style="color: #000000;">j</span> <span style="color: #0000FF;"><=</span> <span style="color: #000000;">n</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">j</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;"><</span> <span style="color: #000000;">mid</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #0000FF;">{</span><span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">],</span><span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">j</span><span style="color: #0000FF;">]}</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">j</span><span style="color: #0000FF;">],</span><span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]}</span>
|
||||
<span style="color: #000000;">i</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span>
|
||||
<span style="color: #000000;">j</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span>
|
||||
<span style="color: #008080;">elsif</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">j</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">></span> <span style="color: #000000;">mid</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #0000FF;">{</span><span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">j</span><span style="color: #0000FF;">],</span><span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">n</span><span style="color: #0000FF;">]}</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">n</span><span style="color: #0000FF;">],</span><span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">j</span><span style="color: #0000FF;">]}</span>
|
||||
<span style="color: #000000;">n</span> <span style="color: #0000FF;">-=</span> <span style="color: #000000;">1</span>
|
||||
<span style="color: #008080;">else</span>
|
||||
<span style="color: #000000;">j</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">while</span>
|
||||
<span style="color: #008080;">return</span> <span style="color: #000000;">s</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
|
||||
with javascript_semantics
|
||||
function three_way_partition(sequence s, integer mid)
|
||||
integer i=1, j=1, n = length(s)
|
||||
while j <= n do
|
||||
if s[j] < mid then
|
||||
{s[i],s[j]} = {s[j],s[i]}
|
||||
i += 1
|
||||
j += 1
|
||||
elsif s[j] > mid then
|
||||
{s[j],s[n]} = {s[n],s[j]}
|
||||
n -= 1
|
||||
else
|
||||
j += 1
|
||||
end if
|
||||
end while
|
||||
return s
|
||||
end function
|
||||
|
||||
<span style="color: #008080;">constant</span> <span style="color: #000000;">colours</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #008000;">"red"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"white"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"blue"</span><span style="color: #0000FF;">}</span>
|
||||
<span style="color: #008080;">enum</span> <span style="color: #000080;font-style:italic;">/*red,*/</span> <span style="color: #000000;">white</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">2</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">blue</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">maxc</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">blue</span>
|
||||
constant colours = {"red","white","blue"}
|
||||
enum /*red,*/ white = 2, blue, maxc = blue
|
||||
|
||||
<span style="color: #008080;">procedure</span> <span style="color: #000000;">show</span><span style="color: #0000FF;">(</span><span style="color: #004080;">string</span> <span style="color: #000000;">msg</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">sequence</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #004080;">sequence</span> <span style="color: #000000;">t</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">))</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #000000;">t</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">colours</span><span style="color: #0000FF;">[</span><span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]]</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%s: %s\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">msg</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">join</span><span style="color: #0000FF;">(</span><span style="color: #000000;">t</span><span style="color: #0000FF;">)})</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>
|
||||
procedure show(string msg, sequence s)
|
||||
sequence t = repeat(0,length(s))
|
||||
for i=1 to length(s) do
|
||||
t[i] = colours[s[i]]
|
||||
end for
|
||||
printf(1,"%s: %s\n",{msg,join(t)})
|
||||
end procedure
|
||||
|
||||
<span style="color: #004080;">sequence</span> <span style="color: #000000;">unsorted</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">sorted</span>
|
||||
<span style="color: #008080;">while</span> <span style="color: #000000;">1</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #000000;">unsorted</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">sq_rand</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(</span><span style="color: #000000;">maxc</span><span style="color: #0000FF;">,</span><span style="color: #000000;">12</span><span style="color: #0000FF;">))</span>
|
||||
<span style="color: #000080;font-style:italic;">-- sorted = sort(deep_copy(unsorted)) -- (works just as well)</span>
|
||||
<span style="color: #000000;">sorted</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">three_way_partition</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">deep_copy</span><span style="color: #0000FF;">(</span><span style="color: #000000;">unsorted</span><span style="color: #0000FF;">),</span> <span style="color: #000000;">white</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">unsorted</span><span style="color: #0000FF;">!=</span><span style="color: #000000;">sorted</span> <span style="color: #008080;">then</span> <span style="color: #008080;">exit</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #0000FF;">?</span><span style="color: #008000;">"oops"</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">while</span>
|
||||
<span style="color: #000000;">show</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"Unsorted"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">unsorted</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000000;">show</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"Sorted"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">sorted</span><span style="color: #0000FF;">)</span>
|
||||
<!--
|
||||
sequence unsorted, sorted
|
||||
while 1 do
|
||||
unsorted = sq_rand(repeat(maxc,12))
|
||||
-- sorted = sort(deep_copy(unsorted)) -- (works just as well)
|
||||
sorted = three_way_partition(deep_copy(unsorted), white)
|
||||
if unsorted!=sorted then exit end if
|
||||
?"oops"
|
||||
end while
|
||||
show("Unsorted",unsorted)
|
||||
show("Sorted",sorted)
|
||||
|
|
|
|||
|
|
@ -1,16 +0,0 @@
|
|||
$Colors = 'red', 'white','blue'
|
||||
|
||||
# Select 10 random colors
|
||||
$RandomBalls = 1..10 | ForEach { $Colors | Get-Random }
|
||||
|
||||
# Ensure we aren't finished before we start. For some reason. It's in the task requirements.
|
||||
While ( $RandomBalls -eq $RandomBalls | Sort { $Colors.IndexOf( $_ ) } )
|
||||
{ $RandomBalls = 1..10 | ForEach { $Colors | Get-Random } }
|
||||
|
||||
# Sort the colors
|
||||
$SortedBalls = $RandomBalls | Sort { $Colors.IndexOf( $_ ) }
|
||||
|
||||
# Display the results
|
||||
$RandomBalls
|
||||
''
|
||||
$SortedBalls
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
'Solution derived from http://www.geeksforgeeks.org/sort-an-array-of-0s-1s-and-2s/.
|
||||
|
||||
'build an unsorted array with n elements
|
||||
Function build_unsort(n)
|
||||
flag = Array("red","white","blue")
|
||||
Set random = CreateObject("System.Random")
|
||||
Dim arr()
|
||||
ReDim arr(n)
|
||||
For i = 0 To n
|
||||
arr(i) = flag(random.Next_2(0,3))
|
||||
Next
|
||||
build_unsort = arr
|
||||
End Function
|
||||
|
||||
'sort routine
|
||||
Function sort(arr)
|
||||
lo = 0
|
||||
mi = 0
|
||||
hi = UBound(arr)
|
||||
Do While mi <= hi
|
||||
Select Case arr(mi)
|
||||
Case "red"
|
||||
tmp = arr(lo)
|
||||
arr(lo) = arr(mi)
|
||||
arr(mi) = tmp
|
||||
lo = lo + 1
|
||||
mi = mi + 1
|
||||
Case "white"
|
||||
mi = mi + 1
|
||||
Case "blue"
|
||||
tmp = arr(mi)
|
||||
arr(mi) = arr(hi)
|
||||
arr(hi) = tmp
|
||||
hi = hi - 1
|
||||
End Select
|
||||
Loop
|
||||
sort = Join(arr,",")
|
||||
End Function
|
||||
|
||||
unsort = build_unsort(11)
|
||||
WScript.StdOut.Write "Unsorted: " & Join(unsort,",")
|
||||
WScript.StdOut.WriteLine
|
||||
WScript.StdOut.Write "Sorted: " & sort(unsort)
|
||||
WScript.StdOut.WriteLine
|
||||
Loading…
Add table
Add a link
Reference in a new issue