Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -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;
|
||||
|
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
|
@ -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))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
@ -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
|
||||
Loading…
Add table
Add a link
Reference in a new issue