Skip to content

Instantly share code, notes, and snippets.

@UplinkCoder
Created January 14, 2019 23:15
Show Gist options
  • Select an option

  • Save UplinkCoder/e7eeefd100fee747e8cfaddadb0cb85d to your computer and use it in GitHub Desktop.

Select an option

Save UplinkCoder/e7eeefd100fee747e8cfaddadb0cb85d to your computer and use it in GitHub Desktop.
double avg(long[] values)
{
double result;
long sum;
foreach(value;values)
{
sum += value
}
result = sum;
sum /= values.length;
return result;
}
double avg(double[] values)
{
double result;
foreach(value;values)
{
result += value
}
result /= values.length;
return result;
}
struct SortedLongs
{
long[] content;
alias content this;
}
struct SortedDoubles
{
double[] content;
alias content this;
}
double average_absolute_diviation(long[] values)
{
const avg_value = avg(values);
typeof(values[0]) sum = 0;
foreach(value;values)
{
if (avg_value > value)
{
sum += (avg_value - value);
}
else
{
sum += (value - avg_value);
}
}
result = sum / double(values.length);
return result;
}
double average_absolute_diviation(double[] values)
{
const avg_value = avg(values);
typeof(values[0]) sum = 0;
foreach(value;values)
{
if (avg_value > value)
{
sum += (avg_value - value);
}
else
{
sum += (value - avg_value);
}
}
result = sum / double(values.length);
return result;
}
SortedDoubles assumeSorted(double[] values)
{
return SortedDoubles(values);
}
SortedLongs assumeSorted(longs[] values)
{
return SortedDoubles(values);
}
long median(SortedLongs values)
{
return ((values.length & 1) ?
: values[$/2]
(values[$/2] + values[($/2)+1]) / 2);
}
long median(SortedDoubles values)
{
return ((values.length & 1) ?
: values[$/2]
(values[$/2] + values[($/2)+1]) / 2);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment