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,31 +0,0 @@
with Ada.Text_IO, Ada.Float_Text_IO;
procedure FindMedian is
f: array(1..10) of float := ( 4.4, 2.3, -1.7, 7.5, 6.6, 0.0, 1.9, 8.2, 9.3, 4.5 );
min_idx: integer;
min_val, median_val, swap: float;
begin
for i in f'range loop
min_idx := i;
min_val := f(i);
for j in i+1 .. f'last loop
if f(j) < min_val then
min_idx := j;
min_val := f(j);
end if;
end loop;
swap := f(i); f(i) := f(min_idx); f(min_idx) := swap;
end loop;
if f'length mod 2 /= 0 then
median_val := f( f'length/2+1 );
else
median_val := ( f(f'length/2) + f(f'length/2+1) ) / 2.0;
end if;
Ada.Text_IO.Put( "Median value: " );
Ada.Float_Text_IO.Put( median_val );
Ada.Text_IO.New_line;
end FindMedian;

View file

@ -1 +0,0 @@
FUNCTION MEDIAN(some-table (ALL))

View file

@ -28,7 +28,7 @@ extension op
}
}
public program()
public Program()
{
var a1 := new real[]{4.1r, 5.6r, 7.2r, 1.7r, 9.3r, 4.4r, 3.2r};
var a2 := new real[]{4.1r, 7.2r, 1.7r, 9.3r, 4.4r, 3.2r};

View file

@ -1,25 +0,0 @@
function median(sequence s)
atom min,k
-- Selection sort of half+1
for i = 1 to length(s)/2+1 do
min = s[i]
k = 0
for j = i+1 to length(s) do
if s[j] < min then
min = s[j]
k = j
end if
end for
if k then
s[k] = s[i]
s[i] = min
end if
end for
if remainder(length(s),2) = 0 then
return (s[$/2]+s[$/2+1])/2
else
return s[$/2+1]
end if
end function
? median({ 4.4, 2.3, -1.7, 7.5, 6.6, 0.0, 1.9, 8.2, 9.3, 4.5 })

View file

@ -1,69 +0,0 @@
function Measure-Data
{
[CmdletBinding()]
[OutputType([PSCustomObject])]
Param
(
[Parameter(Mandatory=$true,
Position=0)]
[double[]]
$Data
)
Begin
{
function Get-Mode ([double[]]$Data)
{
if ($Data.Count -gt ($Data | Select-Object -Unique).Count)
{
$groups = $Data | Group-Object | Sort-Object -Property Count -Descending
return ($groups | Where-Object {[double]$_.Count -eq [double]$groups[0].Count}).Name | ForEach-Object {[double]$_}
}
else
{
return $null
}
}
function Get-StandardDeviation ([double[]]$Data)
{
$variance = 0
$average = $Data | Measure-Object -Average | Select-Object -Property Count, Average
foreach ($number in $Data)
{
$variance += [Math]::Pow(($number - $average.Average),2)
}
return [Math]::Sqrt($variance / ($average.Count-1))
}
function Get-Median ([double[]]$Data)
{
if ($Data.Count % 2)
{
return $Data[[Math]::Floor($Data.Count/2)]
}
else
{
return ($Data[$Data.Count/2], $Data[$Data.Count/2-1] | Measure-Object -Average).Average
}
}
}
Process
{
$Data = $Data | Sort-Object
$Data | Measure-Object -Maximum -Minimum -Sum -Average |
Select-Object -Property Count,
Sum,
Minimum,
Maximum,
@{Name='Range'; Expression={$_.Maximum - $_.Minimum}},
@{Name='Mean' ; Expression={$_.Average}} |
Add-Member -MemberType NoteProperty -Name Median -Value (Get-Median $Data) -PassThru |
Add-Member -MemberType NoteProperty -Name StandardDeviation -Value (Get-StandardDeviation $Data) -PassThru |
Add-Member -MemberType NoteProperty -Name Mode -Value (Get-Mode $Data) -PassThru
}
}

View file

@ -1,2 +0,0 @@
$statistics = Measure-Data 4, 5, 6, 7, 7, 7, 8, 1, 1, 1, 2, 3
$statistics

View file

@ -1 +0,0 @@
$statistics.Median

View file

@ -1,15 +0,0 @@
median: func [
"Returns the midpoint value in a series of numbers; half the values are above, half are below."
block [any-block!]
/local len mid
][
if empty? block [return none]
block: sort copy block
len: length? block
mid: to integer! len / 2
either odd? len [
pick block add 1 mid
][
(block/:mid) + (pick block add 1 mid) / 2
]
]

View file

@ -1,24 +0,0 @@
let median = (arr) =>
{
let float_compare = (a, b) => {
let diff = a -. b
if diff == 0.0 { 0 } else
if diff > 0.0 { 1 } else { -1 }
}
let _ = Js.Array2.sortInPlaceWith(arr, float_compare)
let count = Js.Array.length(arr)
// find the middle value, or the lowest middle value
let middleval = ((count - 1) / 2)
let median =
if (mod(count, 2) != 0) { // odd number, middle is the median
arr[middleval]
} else { // even number, calculate avg of 2 medians
let low = arr[middleval]
let high = arr[middleval+1]
((low +. high) /. 2.0)
}
median
}
Js.log(median([4.1, 5.6, 7.2, 1.7, 9.3, 4.4, 3.2]))
Js.log(median([4.1, 7.2, 1.7, 9.3, 4.4, 3.2]))