On 5/4/21 1:40 PM, Chris Piker wrote:

> I only care about columns 0, 2, 3, 4, 8, 9, 10.

That's std.range.stride.

> char[][] wanted = string_range.get( [1, 5, 7] );  // pseudo-code element

That's std.range.indexed.

import std.range;
import std.stdio;

void main() {
  auto r = 10.iota.stride(2);
  writeln(r);

  writeln(r.indexed([1, 3]));

  // Note: The above works only because 'stride' applies
  // "design by introspection" (DbI) and is able to work as a
  // RandomAccessRanges. Not every range can do that; so, in a more
  // general case, you would have to turn your range to a
  // RandomAccessRange by calling std.array.array first:
  auto r2 = r.array;
  // The following can work with any InputRange only after doing that.
  writeln(r2.indexed([1, 3]));
}

Ali

Reply via email to