view 2017/day05/app.d @ 35:1d99d733cf13 default tip @

day08: replace static foreach with workaround
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Tue, 16 Jan 2018 11:28:55 -0500
parents bc652fa0a645
children
line wrap: on
line source

import std.algorithm: map;
import std.array: array;
import std.stdio;
import std.conv: to;

auto walkmaze(numType)(numType[] instructions) {
  auto steps = 0;
  auto idx = 0;
  
  while(idx >= 0 && idx < instructions.length) {
    auto motion = instructions[idx];
    if (motion > 2) {
      instructions[idx]--;
    }
    else {
      instructions[idx]++;
    }
    idx += motion;
    steps++;
  }

  return steps;
}

void main(string[] args) {
  auto instructions = 
    File(args[1])
    .byLine
    .map!(x => to!int(x))
    .array;
  
  writeln(walkmaze(instructions));
}