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,175 +0,0 @@
-- Rosetta Code Task written in Ada
-- Eban numbers
-- https://rosettacode.org/wiki/Eban_numbers
-- Inspired (mostly) by the Nim and Go solutions
-- August 2024, R. B. E.
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
procedure Eban_Numbers is
function Is_Eban (Candidate : Natural) return Boolean is
N : Natural := Candidate;
B, R, M, T : Natural;
begin
if (N = 0) then
return False;
end if;
B := N / 1_000_000_000;
R := N mod 1_000_000_000;
M := R / 1_000_000;
R := R mod 1_000_000;
T := R / 1_000;
R := R mod 1_000;
case M is
when 30..66 => M := M mod 10;
when others => null;
end case;
case T is
when 30..66 => T := T mod 10;
when others => null;
end case;
case R is
when 30..66 => R := R mod 10;
when others => null;
end case;
if ((B = 0) or (B = 2) or (B = 4) or (B = 6)) then
if ((M = 0) or (M = 2) or (M = 4) or (M = 6)) then
if ((T = 0) or (T = 2) or (T = 4) or (T = 6)) then
if ((R = 0) or (R = 2) or (R = 4) or (R = 6)) then
return True;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
else
return False;
end if;
end Is_Eban;
Group_Total : Natural;
Loop_Starts_At, Loop_Stops_At : Natural;
begin
Loop_Starts_At := 0;
Loop_Stops_At := 1_000;
Put ("eban numbers up to and including: ");
Put (Loop_Stops_At, 3);
New_Line;
for I in Loop_Starts_At .. Loop_Stops_At loop
if Is_Eban (I) then
Put (I, 0);
Put (" ");
end if;
end loop;
New_Line (2);
Loop_Starts_At := 1_000;
Loop_Stops_At := 4_000;
Put ("eban numbers between ");
Put (Loop_Starts_At, 3);
Put (" and ");
Put (Loop_Stops_At, 3);
Put_Line (" (inclusive):");
for I in Loop_Starts_At .. Loop_Stops_At loop
if Is_Eban (I) then
Put (I, 0);
Put (" ");
end if;
end loop;
New_Line (2);
Group_Total := 0;
Loop_Starts_At := 0;
Loop_Stops_At := 10_000;
for I in Loop_Starts_At .. Loop_Stops_At loop
if Is_Eban (I) then
Group_Total := Group_Total + 1;
end if;
end loop;
Put ("Number of eban numbers up to and including ");
Put (Loop_Stops_At, 3);
Put (": ");
Put (Group_Total, 4);
New_Line (2);
Group_Total := 0;
Loop_Starts_At := 0;
Loop_Stops_At := 100_000;
for I in Loop_Starts_At .. Loop_Stops_At loop
if Is_Eban (I) then
Group_Total := Group_Total + 1;
end if;
end loop;
Put ("Number of eban numbers up to and including ");
Put (Loop_Stops_At, 3);
Put (": ");
Put (Group_Total, 4);
New_Line (2);
Group_Total := 0;
Loop_Starts_At := 0;
Loop_Stops_At := 1_000_000;
for I in Loop_Starts_At .. Loop_Stops_At loop
if Is_Eban (I) then
Group_Total := Group_Total + 1;
end if;
end loop;
Put ("Number of eban numbers up to and including ");
Put (Loop_Stops_At, 3);
Put (": ");
Put (Group_Total, 4);
New_Line (2);
Group_Total := 0;
Loop_Starts_At := 0;
Loop_Stops_At := 10_000_000;
for I in Loop_Starts_At .. Loop_Stops_At loop
if Is_Eban (I) then
Group_Total := Group_Total + 1;
end if;
end loop;
Put ("Number of eban numbers up to and including ");
Put (Loop_Stops_At, 3);
Put (": ");
Put (Group_Total, 4);
New_Line (2);
Group_Total := 0;
Loop_Starts_At := 0;
Loop_Stops_At := 100_000_000;
for I in Loop_Starts_At .. Loop_Stops_At loop
if Is_Eban (I) then
Group_Total := Group_Total + 1;
end if;
end loop;
Put ("Number of eban numbers up to and including ");
Put (Loop_Stops_At, 3);
Put (": ");
Put (Group_Total, 4);
New_Line (2);
Group_Total := 0;
Loop_Starts_At := 0;
Loop_Stops_At := 1_000_000_000;
for I in Loop_Starts_At .. Loop_Stops_At loop
if Is_Eban (I) then
Group_Total := Group_Total + 1;
end if;
end loop;
Put ("Number of eban numbers up to and including ");
Put (Loop_Stops_At, 3);
Put (": ");
Put (Group_Total, 4);
New_Line (2);
end Eban_Numbers;