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,43 +0,0 @@
with Ada.Text_IO;
procedure Middle_Three_Digits is
Impossible: exception;
function Middle_String(I: Integer; Middle_Size: Positive) return String is
S: constant String := Integer'Image(I);
First: Natural := S'First;
Full_Size, Border: Natural;
begin
while S(First) not in '0' .. '9' loop -- skip leading blanks and minus
First := First + 1;
end loop;
Full_Size := S'Last-First+1;
if (Full_Size < Middle_Size) or (Full_Size mod 2 = 0) then
raise Impossible;
else
Border := (Full_Size - Middle_Size)/2;
return S(First+Border .. First+Border+Middle_Size-1);
end if;
end Middle_String;
Inputs: array(Positive range <>) of Integer :=
(123, 12345, 1234567, 987654321, 10001, -10001, -123, -100, 100, -12345,
1, 2, -1, -10, 2002, -2002, 0);
Error_Message: constant String := "number of digits must be >= 3 and odd";
package IIO is new Ada.Text_IO.Integer_IO(Integer);
begin
for I in Inputs'Range loop
IIO.Put(Inputs(I), Width => 9);
Ada.Text_IO.Put(": ");
begin
Ada.Text_IO.Put(Middle_String(Inputs(I), 3));
exception
when Impossible => Ada.Text_IO.Put("****" & Error_Message & "****");
end;
Ada.Text_IO.New_Line;
end loop;
end Middle_Three_Digits;

View file

@ -1,91 +0,0 @@
identification division.
program-id. middle3.
environment division.
data division.
working-storage section.
01 num pic 9(9).
88 num-too-small values are -99 thru 99.
01 num-disp pic ---------9.
01 div pic 9(9).
01 mod pic 9(9).
01 mod-disp pic 9(3).
01 digit-counter pic 999.
01 digit-div pic 9(9).
88 no-more-digits value 0.
01 digit-mod pic 9(9).
88 is-even value 0.
01 multiplier pic 9(9).
01 value-items.
05 filler pic s9(9) value 123.
05 filler pic s9(9) value 12345.
05 filler pic s9(9) value 1234567.
05 filler pic s9(9) value 987654321.
05 filler pic s9(9) value 10001.
05 filler pic s9(9) value -10001.
05 filler pic s9(9) value -123.
05 filler pic s9(9) value -100.
05 filler pic s9(9) value 100.
05 filler pic s9(9) value -12345.
05 filler pic s9(9) value 1.
05 filler pic s9(9) value 2.
05 filler pic s9(9) value -1.
05 filler pic s9(9) value -10.
05 filler pic s9(9) value 2002.
05 filler pic s9(9) value -2002.
05 filler pic s9(9) value 0.
01 value-array redefines value-items.
05 items pic s9(9) occurs 17 times indexed by item.
01 result pic x(20).
procedure division.
10-main.
perform with test after varying item from 1 by 1 until items(item) = 0
move items(item) to num
move items(item) to num-disp
perform 20-check
display num-disp " --> " result
end-perform.
stop run.
20-check.
if num-too-small
move "Number too small" to result
exit paragraph
end-if.
perform 30-count-digits.
divide digit-counter by 2 giving digit-div remainder digit-mod.
if is-even
move "Even number of digits" to result
exit paragraph
end-if.
*> if digit-counter is 5, mul by 10
*> if digit-counter is 7, mul by 100
*> if digit-counter is 9, mul by 1000
if digit-counter > 3
compute multiplier rounded = 10 ** (((digit-counter - 5) / 2) + 1)
divide num by multiplier giving num
divide num by 1000 giving div remainder mod
move mod to mod-disp
else
move num to mod-disp
end-if.
move mod-disp to result.
exit paragraph.
30-count-digits.
move zeroes to digit-counter.
move num to digit-div.
perform with test before until no-more-digits
divide digit-div by 10 giving digit-div remainder digit-mod
add 1 to digit-counter
end-perform.
exit paragraph.

View file

@ -1,71 +0,0 @@
identification division.
program-id. middle3.
environment division.
data division.
working-storage section.
01 value-items.
05 filler pic s9(9) value 123.
05 filler pic s9(9) value 12345.
05 filler pic s9(9) value 1234567.
05 filler pic s9(9) value 987654321.
05 filler pic s9(9) value 10001.
05 filler pic s9(9) value -10001.
05 filler pic s9(9) value -123.
05 filler pic s9(9) value -100.
05 filler pic s9(9) value 100.
05 filler pic s9(9) value -12345.
05 filler pic s9(9) value 1.
05 filler pic s9(9) value 2.
05 filler pic s9(9) value -1.
05 filler pic s9(9) value -10.
05 filler pic s9(9) value 2002.
05 filler pic s9(9) value -2002.
05 filler pic s9(9) value 0.
01 value-array redefines value-items.
05 items pic s9(9) occurs 17 times indexed by item.
01 num pic 9(9).
01 num-disp pic ---------9.
01 num2 pic 9(9).
01 power pic 9.
01 power10 pic 9(16).
01 three-digits pic 999.
01 result pic X(20).
01 flag pic 9.
88 done value 1.
procedure division.
01-setup.
perform 02-outer with test after varying item from 1 by 1 until items(item) = 0.
stop run.
02-outer.
move items(item) to num.
move items(item) to num-disp.
if num less than 100
move "too small" to result
else
perform 03-inner with test after varying power from 9 by -1 until power = 1 or done
end-if.
display num-disp " --> " result.
exit paragraph.
03-inner.
move 0 to flag.
compute power10 = 10 ** power.
if num >= power10
move 1 to flag
if function mod(power,2) = 1
move "even number digits" to result
else
move num to num2
compute num2 = num2 / ( 10 ** (( power / 2 ) - 1 ))
move function mod(num2,1000) to three-digits
move three-digits to result
end-if
end-if.

View file

@ -1,7 +1,7 @@
import system'routines;
import extensions;
middleThreeDigits(int n)
MiddleThreeDigits(int n)
{
string s := n.Absolute.toString();
int len := s.Length;
@ -19,11 +19,11 @@ middleThreeDigits(int n)
^ s.Substring(mid-1,3)
}
public program()
public Program()
{
new int[]{123, 12345, 1234567, 987654321, 10001, -10001, -123, -100, 100, -12345, 1, 2, -1, -10, 2002, -2002, 0}
.forEach::(n)
{
console.printLine("middleThreeDigits(",n,"):",middleThreeDigits(n) \\ on::(e => e.Message))
Console.printLine("middleThreeDigits(",n,"):",MiddleThreeDigits(n) \\ on::(e => e.Message))
}
}

View file

@ -1,24 +0,0 @@
function middle3($inp){
$str = [Math]::abs($inp)
$leng = "$str".length
if ($leng -lt 3){
Write-host $inp": [ERROR] too short."
Return
}
if (($leng % 2) -eq 0){
Write-host $inp": [ERROR] even number of digits."
} else {
$trimmer = ($leng - 3) / 2
$ans = "$str".subString($trimmer,3)
Write-host $inp": $ans"
}
Return
}
$sample = 123, 12345, 1234567, 987654321, 10001, -10001, -123, -100, 100, -12345, 1, 2, -1, -10, 2002, -2002, 0
foreach ($x in $sample){middle3 $x}

View file

@ -1,21 +0,0 @@
'http://rosettacode.org/wiki/Middle_three_digits
Function mid3n(n)
'Remove the number's sign.
n = CStr(Abs(n))
If Len(n) < 3 Or Len(n) Mod 2 = 0 Then
mid3n = "Invalid: Either the length of n < 3 or an even number."
ElseIf Round(Len(n)/2) > Len(n)/2 Then
mid3n = Mid(n,Round(Len(n)/2)-1,3)
Else
mid3n = Mid(n,Round(Len(n)/2),3)
End If
End Function
'Calling the function.
arrn = Array(123,12345,1234567,987654321,10001,-10001,-123,-100,100,-12345,_
1,2,-1,-10,2002,-2002,0)
For Each n In arrn
WScript.StdOut.Write n & ": " & mid3n(n)
WScript.StdOut.WriteLine
Next