public Day17(List <string> d)
        {
            grid1 = new Grid3D(d[0].Length - 1, d.Count - 1, 0);
            grid2 = new Grid4D(d[0].Length - 1, d.Count - 1, 0, 0);
            int y = 0;

            foreach (string s in d)
            {
                int x = 0;
                foreach (char c in s)
                {
                    Cord3D cord  = new Cord3D(x, y, 0);
                    Cord4D cord2 = new Cord4D(x, y, 0, 0);
                    Node   n;
                    Node   m;
                    if (c == '#')
                    {
                        n = new Node(true);
                        m = new Node(true);
                    }
                    else
                    {
                        n = new Node(false);
                        m = new Node(false);
                    }

                    grid1.AddNode(cord, n);
                    grid2.AddNode(cord2, m);
                    x++;
                }
                y++;
            }
        }
 public void AddNode(Cord4D c, Node n)
 {
     foreach (Cord4D co in c.GetNeighbourCords())
     {
         if (nodes.ContainsKey(co))
         {
             nodes[co].AddNeighbour(n);
             n.AddNeighbour(nodes[co]);
         }
     }
     nodes.Add(c, n);
 }
 void GenerateW(int w)
 {
     for (int i = minX; i <= maxX; i++)
     {
         for (int j = minZ; j <= maxZ; j++)
         {
             for (int k = minY; k <= maxY; k++)
             {
                 Cord4D cord = new Cord4D(i, k, j, w);
                 Node   n    = new Node(false);
                 this.AddNode(cord, n);
             }
         }
     }
 }
 void GenerateX(int x)
 {
     for (int i = minZ; i <= maxZ; i++)
     {
         for (int j = minY; j <= maxY; j++)
         {
             for (int k = minW; k <= maxW; k++)
             {
                 Cord4D cord = new Cord4D(x, j, i, k);
                 Node   n    = new Node(false);
                 this.AddNode(cord, n);
             }
         }
     }
 }
 void GenerateY(int y)
 {
     for (int i = minX; i <= maxX; i++)
     {
         for (int j = minZ; j <= maxZ; j++)
         {
             for (int k = minW; k <= maxW; k++)
             {
                 Cord4D cord = new Cord4D(i, y, j, k);
                 Node   n    = new Node(false);
                 this.AddNode(cord, n);
             }
         }
     }
 }
 void GenerateZ(int z)
 {
     for (int i = minX; i <= maxX; i++)
     {
         for (int j = minY; j <= maxY; j++)
         {
             for (int k = minW; k <= maxW; k++)
             {
                 Cord4D cord = new Cord4D(i, j, z, k);
                 Node   n    = new Node(false);
                 this.AddNode(cord, n);
             }
         }
     }
 }