"Growth on Exactly Two" Rules

There are many possible rules within the space of cellular automata.  One of the simplest rules is to add a cell wherever it would touch exactly two other cells. It turns out that a variety of complicated things can happen, depending upon your definition of a cell.

2D CA - Hexagonal Cells - "exactly two"

Hexoid needs to be defined to transform the following into a hexagonal cell graphic.

Hexize[{a_, b_, c_}]  :=  {Sqrt[3] (a  +  b/2), 3  b/2, 
        c}

Hexoid[{a_, b_, 
          c_}] := {Polygon[{{0, 1, 0}, {((Sqrt[3])/2), (3/2), 0}, {(Sqrt[3]), 1, 0}, {(Sqrt[3]), 
                0, 0}, {((Sqrt[3])/2), -(1/2), 0}, {0, 0, 0}} + 
            Table[Hexize[{a, b, c}], {6}]], 
Polygon[{{0, 
                0, 1}, {Sqrt[3]/2, -1/2, 1}, {Sqrt[3], 0, 1}, {Sqrt[3], 
                1, 1}, {Sqrt[3]/2, 3/2, 1},  {0, 1, 1}} + 
            Table[Hexize[{a, b, c}], {6}]], 
Polygon[{{0, 
                0, 0}, {Sqrt[3]/2, -1/2, 0}, {Sqrt[3]/2, -1/2, 
                1}, {0, 0, 1}} + 
            Table[Hexize[{a, b, 
                  c}], {4}]], 
Polygon[{{Sqrt[3]/2, -1/
                  2, 0}, {Sqrt[3], 0, 0}, {Sqrt[3], 0, 
                1}, {Sqrt[3]/2, -1/2, 1}} + 
            Table[Hexize[{a, b, c}], {4}]], 
Polygon[{{Sqrt[
                  3], 0, 0}, {Sqrt[3], 1, 0}, {Sqrt[3], 1, 1}, {Sqrt[3], 0, 
                1}} + Table[
              Hexize[{a, b, c}], {4}]], 
Polygon[{{Sqrt[3], 
                1, 0}, {Sqrt[3]/2, 3/2, 0}, {Sqrt[3]/2, 3/2, 1}, {Sqrt[3], 1, 
                1}} + Table[
              Hexize[{a, b, c}], {4}]], 
Polygon[{{Sqrt[3]/
                  2, 3/2, 0},  {0, 1, 0},  {0, 1, 1}, {Sqrt[3]/2, 3/2, 
                1}} + Table[
              Hexize[{a, b, c}], {4}]], 
Polygon[{{0, 1, 
                0}, {0, 0, 0}, {0, 0, 1}, {0, 1, 1}} + 
            Table[Hexize[{a, b, c}], {4}]]}

Graphics3D[
          Hexoid /@ Map[Reverse, 
              Position[
                Reverse[
                  CellularAutomaton[{10938, {2, {{0, 2, 2}, {2, 1, 2}, {2, 2, 
                            0}}}, {1, 1}}, {{{1, 1}}, 0}, 10]], 1]], 
          Boxed ->  False] // Show;

3D CA - Rhombic Dodecahedra (center + edge) - "exactly two"

center = {{{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}, {{0, 0, 0}, {0, 1, 0}, {0, 
            0, 0}}, {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}};

edge = {{{0, 1, 0}, {1, 0, 1}, {0, 1, 0}}, {{1, 0, 1}, {0, 0, 0}, {1, 
            0, 1}}, {{0, 1, 0}, {1, 0, 1}, {0, 1, 0}}};

Rhomboid[
        n_List] := {
Polygon[{{1, 1, 3}, {0, 2, 2}, {1, 1, 
                1}, {2, 0, 2}} + Table[2  n, {4}]], 
        Polygon[{{2, 0, 2}, {1, 1, 1}, {2, 2, 0}, {3, 1, 1}} + 
            Table[2  n, {4}]], 
Polygon[{{3, 1, 3}, {2, 2, 
                4}, {1, 1, 3}, {2, 0, 2}} + 
            Table[2  n, {4}]], 
Polygon[{{3, 1, 1}, {4, 2, 
                2}, {3, 1, 3}, {2, 0, 2}} + 
            Table[2  n, {4}]], 
Polygon[{{1, 3, 1}, {2, 2, 
                0}, {1, 1, 1}, {0, 2, 2}} + 
            Table[2  n, {4}]], 
Polygon[{{0, 2, 2}, {1, 1, 
                3}, {2, 2, 4}, {1, 3, 3}} + 
            Table[2  n, {4}]], 
Polygon[{{1, 3, 3}, {2, 4, 
                2}, {1, 3, 1}, {0, 2, 2}} + 
            Table[2  n, {4}]], 
Polygon[{{4, 2, 2}, {3, 1, 
                1}, {2, 2, 0}, {3, 3, 1}} + 
            Table[2  n, {4}]], 
Polygon[{{3, 3, 3}, {2, 2, 
                4}, {3, 1, 3}, {4, 2, 2}} + 
            Table[2  n, {4}]], 
Polygon[{{4, 2, 2}, {3, 3, 
                1}, {2, 4, 2}, {3, 3, 3}} + 
            Table[2  n, {4}]], 
Polygon[{{3, 3, 1}, {2, 2, 
                0}, {1, 3, 1}, {2, 4, 2}} + 
            Table[2  n, {4}]], 
Polygon[{{2, 4, 2}, {1, 3, 
                3}, {2, 2, 4}, {3, 3, 3}} + Table[2  n, {4}]]}

In order to print correctly on a 3D printer, the FaceForm color must be a single color on the outside.

Graphics3D[{FaceForm[Red, Blue], 
            Rhomboid /@ 
              Position[
                Last[CellularAutomaton[{16427706, {2, 
                        1  center + 2  edge}, {1, 1, 
                        1}}, {{{{1, 0}, {0, 1}}}, 0}, 10]], 1]}, 
          Boxed -> False] // Show;

3D CA - Truncated Octahedra (center + corner) - "exactly two"

The truncated octahedra fills space in the (center+corner) 3DCA systems.

center = {{{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}, {{0, 0, 0}, {0, 1, 0}, {0, 
            0, 0}}, {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}};

corner = {{{1, 0, 1}, {0, 0, 0}, {1, 0, 1}}, {{0, 0, 0}, {0, 0, 0}, {0, 
            0, 0}}, {{1, 0, 1}, {0, 0, 0}, {1, 0, 1}}};

Trunoctoid[
        n_List] := {
Polygon[{{6, 4, 8}, {8, 4, 6}, {8, 6, 
                4}, {6, 8, 4}, {4, 8, 6}, {4, 6, 8}} + Table[4  n, {6}]], 
        Polygon[{{4, 6, 8}, {4, 8, 6}, {2, 8, 4}, {0, 6, 4}, {0, 4, 6}, {2, 
                4, 8}} + Table[4  n, {6}]], 
        Polygon[{{2, 4, 8}, {0, 4, 6}, {0, 2, 4}, {2, 0, 4}, {4, 0, 6}, {4, 
                2, 8}} + Table[4  n, {6}]], 
        Polygon[{{4, 2, 8}, {4, 0, 6}, {6, 0, 4}, {8, 2, 4}, {8, 4, 6}, {6, 
                4, 8}} + Table[4  n, {6}]], 
        Polygon[{{8, 2, 4}, {6, 0, 4}, {4, 0, 2}, {4, 2, 0}, {6, 4, 0}, {8, 
                4, 2}} + Table[4  n, {6}]], 
        Polygon[{{8, 4, 2}, {6, 4, 0}, {4, 6, 0}, {4, 8, 2}, {6, 8, 4}, {8, 
                6, 4}} + Table[4  n, {6}]], 
        Polygon[{{4, 2, 0}, {4, 0, 2}, {2, 0, 4}, {0, 2, 4}, {0, 4, 2}, {2, 
                4, 0}} + Table[4  n, {6}]], 
        Polygon[{{4, 8, 2}, {4, 6, 0}, {2, 4, 0}, {0, 4, 2}, {0, 6, 4}, {2, 
                8, 4}} + Table[4  n, {6}]], 
        Polygon[{{0, 2, 4}, {0, 4, 6}, {0, 6, 4}, {0, 4, 2}} + 
            Table[4  n, {4}]], 
Polygon[{{4, 0, 2}, {6, 0, 
                4}, {4, 0, 6}, {2, 0, 4}} + 
            Table[4  n, {4}]], 
Polygon[{{4, 6, 0}, {6, 4, 
                0}, {4, 2, 0}, {2, 4, 0}} + 
            Table[4  n, {4}]], 
Polygon[{{4, 2, 8}, {6, 4, 
                8}, {4, 6, 8}, {2, 4, 8}} + 
            Table[4  n, {4}]], 
Polygon[{{2, 8, 4}, {4, 8, 
                6}, {6, 8, 4}, {4, 8, 2}} + 
            Table[4  n, {4}]], 
Polygon[{{8, 4, 2}, {8, 6, 
                4}, {8, 4, 6}, {8, 2, 4}} + Table[4  n, {4}]]}

Unlike other 3DCA systems, two cells can "touch" each other in two different ways.  Technically, only the corner cases count -- to the CA system, the two trunoctoids in the second figure don't officially touch.

Graphics3D[
          Trunoctoid /@ 
            Position[
              Last[CellularAutomaton[{64186, {2, 1  center + 2  corner}, {1, 
                      1, 1}}, {{{{1, 0}, {0, 0}, {1, 0}}}, 0}, 13]], 1], 
          Boxed -> False] // Show;

3D CA - Cubes (center + face) - "exactly one or two"

Add a new cube wherever it would touch either one or two existing cubes.

With (center+face), the "exactly two" rule is unfortunately rather boring, since growth can never escape the initial bounding box.

center = {{{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}, {{0, 0, 0}, {0, 1, 0}, {0, 
            0, 0}}, {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}};

face = {{{0, 0, 0}, {0, 1, 0}, {0, 0, 0}}, {{0, 1, 0}, {1, 0, 1}, {0, 
            1, 0}}, {{0, 0, 0}, {0, 1, 0}, {0, 0, 0}}};

Graphics3D[
          Cuboid /@ Position[
              Last[CellularAutomaton[{10942, {2, 2  face + center}, {1, 1, 
                      1}}, {{{{1}}}, 0}, 11]], 1], Boxed -> False] // 
        Show;