public override void Init() { cells = new Dictionary <ulong, Cell>(); int side = (int)parameters.side; for (int q = 0; q < side; q++) { int r2 = side - q; for (int r = 0; r < r2; r++) { int s1 = -q - r; cells.Add(Cantor.Tuple(q, r, s1), CreateCellAtPosition(new TriangularPosition(q, r, s1))); if ((q + r) < side - 1) { int s2 = s1 - 1; cells.Add(Cantor.Tuple(q, r, s2), CreateCellAtPosition(new TriangularPosition(q, r, s2))); } } } base.Init(); }
protected override Cell CellAtPosition(TriangularPosition position) { return(cells[Cantor.Tuple(position.q, position.r, position.s)]); }
protected override bool ContainsAtPosition(TriangularPosition position) { return(cells.ContainsKey(Cantor.Tuple(position.q, position.r, position.s))); }
public override int GetHashCode() { return((int)Cantor.Tuple(q, r, s)); }
public void CanTuple() { var z = Cantor.Tuple(1, 2, 3); Assert.AreEqual(z, 69); }