public void Addlocationifvalid(location loc) { if (!visited.ContainsKey(loc) && isvalidlocation(loc)) { validlocations.Add(loc); visited.Add(loc, false); } }
public void visit(location loc) { if (visited.ContainsKey(loc)) { visited[loc] = true; } else { visited.Add(loc, true); } CheckAndAddAdjacentLocation(loc); }
// public void CheckAndAddAdjacentLocation(location loc) { location right = new location(loc.X + 1, loc.Y); location left = new location(loc.X - 1, loc.Y); location up = new location(loc.X, loc.Y + 1); location down = new location(loc.X, loc.Y - 1); Addlocationifvalid(right); Addlocationifvalid(left); Addlocationifvalid(up); Addlocationifvalid(down); }
static void Main(string[] args) { GridWalk monkeywalk = new GridWalk(); location orgin = new location(0, 0); GridWalk.validlocations.Add(orgin); int index = 0; while (true) { if (index >= validlocations.Count) break; monkeywalk.visit(GridWalk.validlocations[index]); index++; } Console.WriteLine(GridWalk.validlocations.Count); //Console.ReadLine(); }
public static Dictionary<location,bool> visited =new Dictionary<location,bool>();//visted has location and bool value stating if the monkey traved the co-ordinated before. public bool isvalidlocation(location loc) { return (totalsum(loc.X)+totalsum(loc.Y))<=19; }