RosettaCodeData/Task/Averages-Mode/D/averages-mode.d

18 lines
412 B
D
Raw Permalink Normal View History

2013-04-10 16:57:12 -07:00
import std.stdio, std.algorithm, std.array;
2015-02-20 00:35:01 -05:00
auto mode(T)(T[] items) pure /*nothrow @safe*/ {
2013-04-10 16:57:12 -07:00
int[T] aa;
foreach (item; items)
aa[item]++;
2013-06-05 21:47:54 +00:00
immutable m = aa.byValue.reduce!max;
return aa.byKey.filter!(k => aa[k] == m);
2013-04-10 16:57:12 -07:00
}
2015-02-20 00:35:01 -05:00
void main() /*@safe*/ {
2013-04-10 16:57:12 -07:00
auto data = [1, 2, 3, 1, 2, 4, 2, 5, 3, 3, 1, 3, 6];
2013-06-05 21:47:54 +00:00
writeln("Mode: ", data.mode);
2013-04-10 16:57:12 -07:00
data ~= 2;
2013-06-05 21:47:54 +00:00
writeln("Mode: ", data.mode);
2013-04-10 16:57:12 -07:00
}