Func <int, int, bool> Detector(string input) { var icm = new ImmutableIntCodeMachine(input); return((int x, int y) => { var(_, output) = icm.Run(x, y); return output[0] == 1; }); }
public (ImmutableIntCodeMachine iicm, IntCodeOutput output) Run(params string[] input) { var immutableIntCodeMachine = new ImmutableIntCodeMachine(this.icm.Clone()); return(immutableIntCodeMachine, immutableIntCodeMachine.icm.Run(input)); }
IEnumerable <(ImmutableIntCodeMachine iicm, ImmutableList <int> path, Tile tile)> Bfs(ImmutableIntCodeMachine startIicm) { (int dx, int dy)[] dirs = new[] { (0, -1), (0, 1), (-1, 0), (1, 0) };
public object PartOne(string input) { var iicm = new ImmutableIntCodeMachine(input); return(Bfs(iicm).First(s => s.tile == Tile.O2).path.Count); }