private void BuildEdges() { /* * ^----> | | | | | | | <----v */ Edges = new List <string>(); Edges.Add(new string(TileSchema.First().ToArray())); //Top Edges.Add(new string(TileSchema.Select(row => row.Last()).ToArray())); //Right Edges.Add(new string(TileSchema.Last().Reverse <char>().ToArray())); //Bottom Edges.Add(new string(TileSchema.Select(row => row.First()).Reverse <char>().ToArray())); //Left //Flip var flippedEdges = Edges.Select(s => new string(s.Reverse().ToArray())).ToList(); Edges.Add(flippedEdges[2]); // Former Bottom; now top Edges.Add(flippedEdges[1]); Edges.Add(flippedEdges[0]); // Former Top, now bottom Edges.Add(flippedEdges[3]); }