On Thursday, 11 September 2014 at 14:56:00 UTC, Daniel Kozak via Digitalmars-d-learn wrote:
V Thu, 11 Sep 2014 14:49:02 +0000
bearophile via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com>
napsáno:

Daniel Kozak:

You can just use min:

import std.stdio, std.algorithm;

struct Thing {
     uint x;
     alias x this;
}

alias minimum = reduce!min;

void main() {
        immutable ar1 = [10, 20, 30, 40, 50];
        ar1.minimum.writeln;

        immutable ar2 = [Thing(10), Thing(20), Thing(40)];
        ar2.minimum.writeln;
}

Bye,
bearophile

Yep, this look the most idiomatic :).

Why there is no phobos function for minimum of array(range)?

There is: http://dlang.org/phobos/std_algorithm.html#.minPos

To note though: minPos will "find" the position of the smallest element, whereas reduce will accumulate and return the lowest value. That said:

alias minmax = reduce!(min, max);

auto mm = ar1.minmax();
auto min = mm[0];
auto max = mm[1];

Found both in one line of code, and only 1 iteration of ar1.

Reply via email to