Data update

This commit is contained in:
Ingy döt Net 2026-02-01 16:33:20 -08:00
parent 5150844a7d
commit 4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions

View file

@ -1,8 +0,0 @@
package binning is
type Nums_Array is array (Natural range <>) of Integer;
function Is_Sorted (Item : Nums_Array) return Boolean;
subtype Limits_Array is Nums_Array with
Dynamic_Predicate => Is_Sorted (Limits_Array);
function Bins (Limits : Limits_Array; Data : Nums_Array) return Nums_Array;
procedure Print (Limits : Limits_Array; Bin_Result : Nums_Array);
end binning;

View file

@ -1,69 +0,0 @@
pragma Ada_2012;
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
package body binning is
---------------
-- Is_Sorted --
---------------
function Is_Sorted (Item : Nums_Array) return Boolean is
begin
return
(for all i in Item'First .. Item'Last - 1 => Item (i) < Item (i + 1));
end Is_Sorted;
----------
-- Bins --
----------
function Bins (Limits : Limits_Array; Data : Nums_Array) return Nums_Array
is
Result : Nums_Array (Limits'First .. Limits'Last + 1) := (others => 0);
Bin_Index : Natural;
begin
for value of Data loop
Bin_Index := Result'First;
for I in reverse Limits'Range loop
if value >= Limits (I) then
Bin_Index := I + 1;
exit;
end if;
end loop;
Result (Bin_Index) := Result (Bin_Index) + 1;
end loop;
return Result;
end Bins;
-----------
-- Print --
-----------
procedure Print (Limits : Limits_Array; Bin_Result : Nums_Array) is
begin
if Limits'Length = 0 then
return;
end if;
Put (" < ");
Put (Item => Limits (Limits'First), Width => 3);
Put (": ");
Put (Item => Bin_Result (Bin_Result'First), Width => 2);
New_Line;
for i in Limits'First + 1 .. Limits'Last loop
Put (">= ");
Put (Item => Limits (i - 1), Width => 3);
Put (" and < ");
Put (Item => Limits (i), Width => 3);
Put (": ");
Put (Item => Bin_Result (i), Width => 2);
New_Line;
end loop;
Put (">= ");
Put (Item => Limits (Limits'Last), Width => 3);
Put (" : ");
Put (Item => Bin_Result (Bin_Result'Last), Width => 2);
New_Line;
end Print;
end binning;

View file

@ -1,34 +0,0 @@
with Ada.Text_IO; use Ada.Text_IO;
with binning; use binning;
procedure Main is
Limits_1 : Limits_Array := (23, 37, 43, 53, 67, 83);
Data_1 : Nums_Array :=
(95, 21, 94, 12, 99, 4, 70, 75, 83, 93, 52, 80, 57, 5, 53, 86, 65, 17, 92,
83, 71, 61, 54, 58, 47, 16, 8, 9, 32, 84, 7, 87, 46, 19, 30, 37, 96, 6,
98, 40, 79, 97, 45, 64, 60, 29, 49, 36, 43, 55);
Limits_2 : Limits_Array := (14, 18, 249, 312, 389, 392, 513, 591, 634, 720);
Data_2 : Nums_Array :=
(445, 814, 519, 697, 700, 130, 255, 889, 481, 122, 932, 77, 323, 525, 570,
219, 367, 523, 442, 933, 416, 589, 930, 373, 202, 253, 775, 47, 731, 685,
293, 126, 133, 450, 545, 100, 741, 583, 763, 306, 655, 267, 248, 477,
549, 238, 62, 678, 98, 534, 622, 907, 406, 714, 184, 391, 913, 42, 560,
247, 346, 860, 56, 138, 546, 38, 985, 948, 58, 213, 799, 319, 390, 634,
458, 945, 733, 507, 916, 123, 345, 110, 720, 917, 313, 845, 426, 9, 457,
628, 410, 723, 354, 895, 881, 953, 677, 137, 397, 97, 854, 740, 83, 216,
421, 94, 517, 479, 292, 963, 376, 981, 480, 39, 257, 272, 157, 5, 316,
395, 787, 942, 456, 242, 759, 898, 576, 67, 298, 425, 894, 435, 831, 241,
989, 614, 987, 770, 384, 692, 698, 765, 331, 487, 251, 600, 879, 342,
982, 527, 736, 795, 585, 40, 54, 901, 408, 359, 577, 237, 605, 847, 353,
968, 832, 205, 838, 427, 876, 959, 686, 646, 835, 127, 621, 892, 443,
198, 988, 791, 466, 23, 707, 467, 33, 670, 921, 180, 991, 396, 160, 436,
717, 918, 8, 374, 101, 684, 727, 749);
Bin_1 : Nums_Array := Bins (Limits => Limits_1, Data => Data_1);
Bin_2 : Nums_Array := Bins (Limits => Limits_2, Data => Data_2);
begin
Put_Line ("Example 1:");
Print (Limits => Limits_1, Bin_Result => Bin_1);
New_Line;
Put_Line ("Example 2:");
Print (Limits => Limits_2, Bin_Result => Bin_2);
end Main;