tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
62
Task/Permutation-test/Ada/permutation-test-1.ada
Normal file
62
Task/Permutation-test/Ada/permutation-test-1.ada
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
with Ada.Text_IO; with Iterate_Subsets;
|
||||
|
||||
procedure Permutation_Test is
|
||||
|
||||
type Group_Type is array(Positive range <>) of Positive;
|
||||
|
||||
Treat_Group: constant Group_Type := (85, 88, 75, 66, 25, 29, 83, 39, 97);
|
||||
Ctrl_Group: constant Group_Type := (68, 41, 10, 49, 16, 65, 32, 92, 28, 98);
|
||||
|
||||
package Iter is new Iterate_Subsets(Treat_Group'Length, Ctrl_Group'Length);
|
||||
|
||||
Full_Group: constant Group_Type(1 .. Iter.All_Elements)
|
||||
:= Treat_Group & Ctrl_Group;
|
||||
|
||||
function Mean(S: Iter.Subset) return Float is
|
||||
Sum: Natural := 0;
|
||||
begin
|
||||
for I in S'Range loop
|
||||
Sum := Sum + Full_Group(S(I));
|
||||
end loop;
|
||||
return Float(Sum)/Float(S'Length);
|
||||
end Mean;
|
||||
|
||||
package FIO is new Ada.Text_IO.Float_IO(Float);
|
||||
|
||||
T_Avg: Float := Mean(Iter.First);
|
||||
S_Avg: Float;
|
||||
S: Iter.Subset := Iter.First;
|
||||
Equal: Positive := 1; -- Mean(Iter'First) = Mean(Iter'First)
|
||||
Higher: Natural := 0;
|
||||
Lower: Natural := 0;
|
||||
|
||||
begin -- Permutation_Test;
|
||||
-- first, count the subsets with a higher, an equal or a lower mean
|
||||
loop
|
||||
Iter.Next(S);
|
||||
S_Avg := Mean(S);
|
||||
if S_Avg = T_Avg then
|
||||
Equal := Equal + 1;
|
||||
elsif S_Avg >= T_Avg then
|
||||
Higher := Higher + 1;
|
||||
else
|
||||
Lower := Lower + 1;
|
||||
end if;
|
||||
exit when Iter.Last(S);
|
||||
end loop;
|
||||
|
||||
-- second, output the results
|
||||
declare
|
||||
use Ada.Text_IO;
|
||||
Sum: Float := Float(Higher + Equal + Lower);
|
||||
begin
|
||||
Put("Less or Equal: ");
|
||||
FIO.Put(100.0*Float(Lower+Equal) / Sum, Fore=>3, Aft=>1, Exp=>0);
|
||||
Put(Integer'Image(Lower+Equal));
|
||||
New_Line;
|
||||
Put("More: ");
|
||||
FIO.Put(100.0*Float(Higher) / Sum, Fore=>3, Aft=>1, Exp=>0);
|
||||
Put(Integer'Image(Higher));
|
||||
New_Line;
|
||||
end;
|
||||
end Permutation_Test;
|
||||
Loading…
Add table
Add a link
Reference in a new issue