Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -1,19 +0,0 @@
|
|||
with Ada.Containers.Indefinite_Vectors, Ada.Text_IO;
|
||||
|
||||
package String_Vectors is
|
||||
|
||||
package String_Vec is new Ada.Containers.Indefinite_Vectors
|
||||
(Index_Type => Positive, Element_Type => String);
|
||||
|
||||
type Vec is new String_Vec.Vector with null record;
|
||||
|
||||
function Read(Filename: String) return Vec;
|
||||
-- uses Ada.Text_IO to read words from the given file into a Vec
|
||||
-- requirement: each word is written in a single line
|
||||
|
||||
function Is_In(List: Vec;
|
||||
Word: String;
|
||||
Start: Positive; Stop: Natural) return Boolean;
|
||||
-- checks if Word is in List(Start .. Stop);
|
||||
-- requirement: the words in List are sorted alphabetically
|
||||
end String_Vectors;
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
package body String_Vectors is
|
||||
|
||||
function Is_In(List: Vec;
|
||||
Word: String;
|
||||
Start: Positive; Stop: Natural) return Boolean is
|
||||
Middle: Positive;
|
||||
begin
|
||||
if Start > Stop then
|
||||
return False;
|
||||
else
|
||||
Middle := (Start+Stop) / 2;
|
||||
if List.Element(Middle) = Word then
|
||||
return True;
|
||||
elsif List.Element(Middle) < Word then
|
||||
return List.Is_In(Word, Middle+1, Stop);
|
||||
else
|
||||
return List.Is_In(Word, Start, Middle-1);
|
||||
end if;
|
||||
end if;
|
||||
end Is_In;
|
||||
|
||||
function Read(Filename: String) return Vec is
|
||||
package IO renames Ada.Text_IO;
|
||||
Persistent_List: IO.File_Type;
|
||||
List: Vec;
|
||||
begin
|
||||
IO.Open(File => Persistent_List, Name => Filename, Mode => IO.In_File);
|
||||
while not IO.End_Of_File(Persistent_List) loop
|
||||
List.Append(New_Item => IO.Get_Line(Persistent_List));
|
||||
end loop;
|
||||
IO.Close(Persistent_List);
|
||||
return List;
|
||||
end Read;
|
||||
|
||||
end String_Vectors;
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
with String_Vectors, Ada.Text_IO, Ada.Command_Line;
|
||||
|
||||
procedure Semordnilap is
|
||||
|
||||
function Backward(S: String) return String is
|
||||
begin
|
||||
if S'Length < 2 then
|
||||
return S;
|
||||
else
|
||||
return (S(S'Last) & Backward(S(S'First+1 .. S'Last-1)) & S(S'First));
|
||||
end if;
|
||||
end Backward;
|
||||
|
||||
W: String_Vectors.Vec := String_Vectors.Read(Ada.Command_Line.Argument(1));
|
||||
|
||||
Semi_Counter: Natural := 0;
|
||||
|
||||
begin
|
||||
for I in W.First_Index .. W.Last_Index loop
|
||||
if W.Element(I) /= Backward(W.Element(I)) and then
|
||||
W.Is_In(Backward(W.Element(I)), W.First_Index, I) then
|
||||
Semi_Counter := Semi_Counter + 1;
|
||||
if Semi_Counter <= 5 then
|
||||
Ada.Text_IO.Put_Line(W.Element(I) & " - " & Backward(W.Element(I)));
|
||||
end if;
|
||||
end if;
|
||||
end loop;
|
||||
Ada.Text_IO.New_Line;
|
||||
Ada.Text_IO.Put("pairs found:" & Integer'Image(Semi_Counter));
|
||||
end Semordnilap;
|
||||
Loading…
Add table
Add a link
Reference in a new issue