44 lines
1.3 KiB
Ada
44 lines
1.3 KiB
Ada
with Ada.Text_IO;
|
|
with Hailstones;
|
|
|
|
procedure Main is
|
|
package Integer_IO is new Ada.Text_IO.Integer_IO (Integer);
|
|
|
|
procedure Print_Sequence (X : Hailstones.Integer_Sequence) is
|
|
begin
|
|
for I in X'Range loop
|
|
Integer_IO.Put (Item => X (I), Width => 0);
|
|
if I < X'Last then
|
|
Ada.Text_IO.Put (", ");
|
|
end if;
|
|
end loop;
|
|
Ada.Text_IO.New_Line;
|
|
end Print_Sequence;
|
|
|
|
Hailstone_27 : constant Hailstones.Integer_Sequence :=
|
|
Hailstones.Create_Sequence (N => 27);
|
|
|
|
begin
|
|
Ada.Text_IO.Put_Line ("Length of 27:" & Integer'Image (Hailstone_27'Length));
|
|
Ada.Text_IO.Put ("First four: ");
|
|
Print_Sequence (Hailstone_27 (Hailstone_27'First .. Hailstone_27'First + 3));
|
|
Ada.Text_IO.Put ("Last four: ");
|
|
Print_Sequence (Hailstone_27 (Hailstone_27'Last - 3 .. Hailstone_27'Last));
|
|
|
|
declare
|
|
Longest_Length : Natural := 0;
|
|
Longest_N : Positive;
|
|
Length : Natural;
|
|
begin
|
|
for I in 1 .. 99_999 loop
|
|
Length := Hailstones.Create_Sequence (N => I)'Length;
|
|
if Length > Longest_Length then
|
|
Longest_Length := Length;
|
|
Longest_N := I;
|
|
end if;
|
|
end loop;
|
|
Ada.Text_IO.Put_Line ("Longest length is" & Integer'Image (Longest_Length));
|
|
Ada.Text_IO.Put_Line ("with N =" & Integer'Image (Longest_N));
|
|
end;
|
|
end Main;
|