RosettaCodeData/Task/Ordered-words/Ada/ordered-words.ada

33 lines
978 B
Ada
Raw Permalink Normal View History

2017-09-23 10:01:46 +02:00
with Ada.Text_IO, Ada.Containers.Indefinite_Vectors;
use Ada.Text_IO;
2013-04-10 12:38:42 -07:00
procedure Ordered_Words is
package Word_Vectors is new Ada.Containers.Indefinite_Vectors
(Index_Type => Positive, Element_Type => String);
2017-09-23 10:01:46 +02:00
use Word_Vectors;
File : File_Type;
Ordered_Words : Vector;
2013-04-10 12:38:42 -07:00
Max_Length : Positive := 1;
begin
2017-09-23 10:01:46 +02:00
Open (File, In_File, "unixdict.txt");
while not End_Of_File (File) loop
2013-04-10 12:38:42 -07:00
declare
2017-09-23 10:01:46 +02:00
Word : String := Get_Line (File);
2013-04-10 12:38:42 -07:00
begin
2017-09-23 10:01:46 +02:00
if (for all i in Word'First..Word'Last-1 => Word (i) <= Word(i+1)) then
if Word'Length > Max_Length then
Max_Length := Word'Length;
Ordered_Words.Clear;
Ordered_Words.Append (Word);
elsif Word'Length = Max_Length then
Ordered_Words.Append (Word);
2013-04-10 12:38:42 -07:00
end if;
end if;
end;
end loop;
2017-09-23 10:01:46 +02:00
for Word of Ordered_Words loop
Put_Line (Word);
end loop;
Close (File);
2013-04-10 12:38:42 -07:00
end Ordered_Words;