public CartesianMap(IReadOnlyCartesianMap <T> shallowCopy) { Width = shallowCopy.Width; Height = shallowCopy.Height; Size = shallowCopy.Size; inner = new T[shallowCopy.Width, shallowCopy.Height]; foreach (var(p, v) in shallowCopy.ForEach()) { inner[p.X, p.Y] = v; } }
public static bool Contains <T>(this IReadOnlyCartesianMap <T> map, VectorInt2 p) { if (map is SparseCartesianMap <T> sp) { return(sp.Contains(p)); } if (p.X < 0 || p.Y < 0) { return(false); } if (p.X >= map.Width || p.Y >= map.Height) { return(false); } return(true); }
private Puzzle(IReadOnlyCartesianMap <CellDefinition <char> > map, CellDefinition <char> .Set definition) : base(map, definition) { }
public static int Count <T>(this IReadOnlyCartesianMap <T> map, T instance) => Enumerable.Count(map.ForEach(), x => object.Equals(instance, x.Value));