Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -1,46 +0,0 @@
|
|||
with Ada.Text_IO; use Ada.Text_IO;
|
||||
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
|
||||
with Ada.Strings.Fixed; use Ada.Strings.Fixed;
|
||||
|
||||
procedure Range_Extraction is
|
||||
type Sequence is array (Positive range <>) of Integer;
|
||||
function Image (S : Sequence) return String is
|
||||
Result : Unbounded_String;
|
||||
From : Integer;
|
||||
procedure Flush (To : Integer) is
|
||||
begin
|
||||
if Length (Result) > 0 then
|
||||
Append (Result, ',');
|
||||
end if;
|
||||
Append (Result, Trim (Integer'Image (From), Ada.Strings.Left));
|
||||
if From < To then
|
||||
if From+1 = To then
|
||||
Append (Result, ',');
|
||||
else
|
||||
Append (Result, '-');
|
||||
end if;
|
||||
Append (Result, Trim (Integer'Image (To), Ada.Strings.Left));
|
||||
end if;
|
||||
end Flush;
|
||||
begin
|
||||
if S'Length > 0 then
|
||||
From := S (S'First);
|
||||
for I in S'First + 1..S'Last loop
|
||||
if S (I - 1) + 1 /= S (I) then
|
||||
Flush (S (I - 1));
|
||||
From := S (I);
|
||||
end if;
|
||||
end loop;
|
||||
Flush (S (S'Last));
|
||||
end if;
|
||||
return To_String (Result);
|
||||
end Image;
|
||||
begin
|
||||
Put_Line
|
||||
( Image
|
||||
( ( 0, 1, 2, 4, 6, 7, 8, 11, 12, 14,
|
||||
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
|
||||
25, 27, 28, 29, 30, 31, 32, 33, 35, 36,
|
||||
37, 38, 39
|
||||
) ) );
|
||||
end Range_Extraction;
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
with Ada.Text_IO, Ada.Strings.Fixed;
|
||||
|
||||
procedure Range_Extract is
|
||||
type Sequence is array (Positive range <>) of Integer;
|
||||
|
||||
function Img(I: Integer) return String is -- the image of an Integer
|
||||
begin
|
||||
return
|
||||
Ada.Strings.Fixed.Trim(Integer'Image(I), Ada.Strings.Left);
|
||||
end Img;
|
||||
|
||||
function Img(S: Sequence) return String is -- the image of a Sequence
|
||||
|
||||
function X(S : Sequence) return String is -- recursive eXtract
|
||||
Idx: Positive := S'First;
|
||||
begin
|
||||
if S'Length = 0 then return
|
||||
""; -- return nothing if Sequence is empty
|
||||
else
|
||||
while Idx < S'Last and then S(Idx+1) = S(Idx) + 1 loop
|
||||
Idx := Idx + 1;
|
||||
end loop;
|
||||
if Idx = S'First then return
|
||||
"," & Img(S(Idx)) & X(S(Idx+1 .. S'Last));
|
||||
elsif Idx = S'First+1 then return
|
||||
"," & Img(S(S'First)) & ',' & Img(S(Idx)) & X(S(Idx+1 .. S'Last));
|
||||
else return
|
||||
"," & Img(S(S'First)) & '-' & Img(S(Idx)) & X(S(Idx+1 .. S'Last));
|
||||
end if;
|
||||
end if;
|
||||
end X;
|
||||
|
||||
begin -- function Img(S: Sequence) return String
|
||||
if S'Length = 0 then return
|
||||
"";
|
||||
else return
|
||||
Img(S(S'First)) & X(S(S'First+1 .. S'Last));
|
||||
end if;
|
||||
end Img;
|
||||
|
||||
begin -- main
|
||||
Ada.Text_IO.Put_Line(Img( ( 0, 1, 2, 4, 6, 7, 8, 11, 12, 14, 15, 16,
|
||||
17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29,
|
||||
30, 31, 32, 33, 35, 36, 37, 38, 39) ));
|
||||
end Range_Extract;
|
||||
Loading…
Add table
Add a link
Reference in a new issue