On 02/09/2016 12:54 PM, Charles wrote:
On Tuesday, 9 February 2016 at 20:48:01 UTC, Steven Schveighoffer wrote:
On 2/9/16 3:40 PM, Charles wrote:
This seems to be true of any range function really... is there a way to
access the key within my range?
Example of what I want to do:
auto x = [1,2,3,4,5];
x.filter( x_key % 2 == 1 ).sum(); // sum odd elements in array
An array is not an indexed range. It only works with foreach by key
because of special foreach behavior.
What you want is std.range.enumerate
Exactly! Thanks!
Interestingly, hackerrank doesn't seem to have it. They're using
2.067.0-b1 on Ubuntu 14.04.
For this specific problem, you can combine drop() and stride() (and even
sum()! ;) ):
import std.range;
import std.algorithm;
import std.stdio;
void main()
{
auto x = [1, 2, 3, 4, 5];
writeln(x.drop(1).stride(2).sum); // 6
}
Ali