Plus Equals #1

About eight years ago, I created a simple design concept as a gift for family and friends. It consisted of eight 5″×7″ cards of different colors; two were solid and the other six had geometric shapes cut out of them. Stacking the cards in different configurations could generate seemingly countless patterns, making it a small decoration that could be dramatically altered at a moment’s notice to suit the occasion or just provide a little change of scenery (Fig. 1).

A row of eight cards of varying shades with geometric shapes cut of them. Each card is labeled with a letter. A: horizontal stripes. B: Vertical stripes. C: Diagonal stripes from top left to bottom right. D: Diagonal stripes from top right to bottom left. E: Semicircular stripes. F: Staggered circles. G: Opaque black. H: Opaque white. Underneath, some of the cards are repeated, enlarged, and arranged in this sequence: H-F-B-D-A. An arrow points from the sequence to what it looks like as a stack, showing the image made by stacking that sequence of cards on top of each other.ABCBDEFFGDAHHHFBDA
Fig. 1: This set of eight cards with geometric shapes cut out of them can create many different patterns by stacking them in different ways
Two cardboard sleeves, each containing a stack of a dozen cards of varying colors, with different geomtric shapes cut out of each. The first sleeve displays the cards through a die-cut hexagon; the second sleeve’s corresponding die-cut is a circle.
Fig. 2: Two versions of Kaleidograph, a system of 12 two-sided cards which can be combined over 500 billion ways

Not long after, I was made aware of Kaleidographs, toys based on the same idea, whose system of 12 two-sided square cards boasts over 500 billion possible unique combinations (Fig. 2). That staggering number made me wonder: How many combinations were possible with my simpler design? I wanted not only to know the amount, but, to the extent possible, to see all of the combinations. This seemed like a fairly trivial problem for an algorithm, but my skills in that area were virtually nonexistent. Instead, using Adobe Illustrator, I developed a system through which I could theoretically manually generate the full set of combinations, but the amount of time and labor required proved to be too much and I eventually shelved the project.

Over the next several years, similar works caught my attention, including the self-explanatory poster The 892 Unique Ways to Partition a 3×4 Grid and a clever bit of activism called All the Music, which effectively puts into the public domain every possible melody that hasn’t already been copyrighted. But the one that captivated me most was Incomplete Open Cubes, a 1974 work in which the conceptual artist Sol LeWitt found 122 unique structures utilizing three or more of the edges of an open cube (Fig. 3). As I studied it, I began to realize that many more cube configurations were possible if some of LeWitt’s constraints were removed. Having learned the basics of Python in a workshop led by type designer and programmer Just van Rossum the previous summer, I was able to apply my modest new programming skills to expand LeWitt’s set of cubes from 122 to 4,094. I called the project Incomplete Open Cubes Revisited.

An all-caps title reads, “Variations of Incomplete Open Cubes.” Beneath it, a grid of 122 individually-numbered isometric line drawings of cubes, each with various parts missing. The drawings, all unique, are grouped according to how many parts they have.
Fig. 3: Schematic drawing of Sol LeWitt’s Incomplete Open Cubes

I’m still a poor excuse for a mathematician, but I continue to be fascinated by artistic applications of what I now know to be an area of mathematics called combinatorics. Much of the algorithmic art I’ve experienced has been based on feeding various values to an algorithm and cherry-picking the most interesting results. What appeals to me more about a combinatoric approach is the creation of a system whose many possible results are all interesting, both individually and as a set.

And so I’ve started Plus Equals as a place to document my exploration of the artistic possibilities of combinatorics. The name comes from an assignment operator common to many programming languages: When x += 1, it adds 1 to the value of x. Apart from the certainty that the += operator will be used in my work often, I’m drawn to its succinct implication that combination is an act of creation.


For this first issue of Plus Equals, I think it’s appropriate to revisit the eight-card design concept that started me on this path all those years ago. My math skills still aren’t as sophisticated as I’d like them to be, but building on my experience with Incomplete Open Cubes Revisited, I’ve managed to figure out not only how many ways those eight cards can be stacked, but how many unique combinations are possible for any other number of cards.

It begins with a set of two. Each individual card is counted as one stack, as is each card stacked on top of the other, which yields four possible stacks: A, B, AB, and BA (Fig. 4). Adding a third card to the set introduces an additional level of stacking considerations. Card A now yields not only an AB stack, but also an AC stack. AB yields ABC; AC yields ACB. The three-card set ultimately gives us 15 unique stacks (Fig. 5), a four-card set gives us 64 unique stacks (Fig. 6), and just as it’s starting to get cumbersome to count everything this way, a mathematic pattern emerges. Going back to the two-card set, which yields four unique stacks, if we add 1 to the number of unique stacks (4+1), add 1 to the number of cards (2+1), and multiply the two sums, we get 15, which is exactly how many unique stacks are possible with a three-card set. Apply that same formula to the three-card set, and we’ll see another familiar number: (15+1)×(3+1)=64. And so on: 4 15 64 325 1,956 13,699 109,600. By the time we’ve reached 10 cards, nearly 10 million unique stacks are possible!

A diagram showing possible sequences of the letters A and B. On the left, the letter A is shown with lines extending to three possible two-letter sequences that could follow from it: A-B, A-C, A-D. From each two-letter sequence are lines extending to a three-letter sequences. For example, extended from the A-B sequence is A-B-C. The process is repeated for each letter from A to B, totalling four sequences.AABBBA
Fig. 4: A set of two cards can be stacked four different ways
A diagram showing possible sequences of letters from A to C. On the left, the letter A is shown with lines extending to two possible two-letter sequences that could follow from it: A-B and A-C. From each two-letter sequence is a line extending to a three-letter sequence. For example, extended from the A-B sequence is A-B-C. The process is repeated for each letter from A to C, totalling 15 sequences.AABABCACACBBBABACBCBCACCACABCBCBA
Fig. 5: A set of three cards can be stacked 15 different ways
A diagram showing possible sequences of letters from A to D. On the left, the letter A is shown with lines extending to three possible two-letter sequences that could follow from it: A-B, A-C, A-D. From each two-letter sequence are lines extending to two possible three-letter sequences. For example, extended from the A-B sequence are A-B-C and A-B-D. From each three-letter sequence is a line extending to a four-letter sequence. For example, extended from A-B-C is A-B-C-D. The process is repeated for each letter from A to D, totalling 64 sequences.AABABCABCDABDABDCACACBACBDACDACDBADADBADBCADCADCBBBABACBACDBADBADCBCBCABCADBCDBCDABDBDABDACBDCBDCACCACABCABDCADCADBCBCBACBADCBDCBDACDCDACDABCDBCDBADDADABDABCDACDACBDBDBADBACDBCDBCADCDCADCABDCBDCBA
Fig. 6: A set of four cards can be stacked 64 different ways

So, using this method, we know that when up to eight cards are in play, there are 109,600 different ways they can be combined. But in the case of my original eight-card design concept, the number of possible unique images they can generate is actually far lower than that. First of all, two of the cards—G and H—are completely opaque. Any combination of cards stacked under one of them will be completely hidden from view, meaning any combination of cards with G or H on top is functionally identical (Fig. 7). Secondly, owing to the arrangement of the shapes cut out of cards A through D, any combination of all four of those cards is also opaque. As with cards G and H, whenever cards A through D are all present, nothing beneath them is visible (Fig. 8).

A sequence of five cards of various shades with geometric shapes cut out of them, each labelled with a letter. F: Staggered circles. A: Horizontal stripes. B: Vertical stripes. C: Diagonal stripes from top left to bottom right. H: Opaque white. An arrow points from the sequence to what it looks like as a stack, showing the image made by stacking that sequence of cards on top of each other. Since the opaque white card is on top, the image is plain white.FABCHFABCH
Fig. 7: Since card H is completely opaque, it obscures any cards stacked beneath it
A sequence of five cards of various shades with geometric shapes cut out of them, each labelled with a letter. G: Opaque black. D: Diagonal stripes from top right to bottom left. B: Vertical stripes. A: Horizontal stripes. C: Diagonal stripes from top left to bottom right. An arrow points from the sequence to what it looks like as a stack, showing the image made by stacking that sequence of cards on top of each other. Underneath, the same sequence and stack of cards is repeated, but with an H card (opaque white) substituted at the beginning/bottom. The resulting stack looks identical to the first stack.GDBACGDBACHDBACHDBAC
Fig. 8: Any combination of cards A through D will obscure any cards stacked beneath them

There’s certainly a way to work around these issues, find the true number of possible unique images, and generate them, but that seems like a fairly convoluted start to this enterprise, and one I’m not really interested in pursuing. Instead, I’ve decided to make things more manageable by paring the deck down to just cards A through D, knowing that every possible combination of them will yield a unique image. I’ve also made them square and replaced their colors with black stripes on white (Fig. 9). The latter decision, born partly of printing budget constraints, has the benefit of introducing added visual interplay between the cards.

A series of four square white cards, each labelled with a letter. Each has stripes cut out of it and black stripes printed on it. A: Horizontal stripes cut out, diagonal black stripes from top right to bottom left printed. B: Vertical stripes cut out, diagonal black stripes from top left to bottom right printed. C: Diagonal stripes from top right to bottom left cut out, black vertical stripes printed. D: Diagonal stripes from top left to bottom right cut out, horizontal black stripes printed.ABCD
Fig. 9: The modified designs of cards A through D, which are the basis of Plus Equals #1

As we learned earlier, these four cards can be stacked 64 different ways, a manageable amount I could do manually, but instead I wrote a Python script to do it for me. Run through a vector drawing app called DrawBot and utilizing the combinatoric stacking method described earlier, the script draws each card and generates all 64 unique combinations, which are collected here. Modified versions of this script are likely to power future Plus Equals explorations, and I hope you’ll join me for those. Enjoy!

Rob Weychert
rob@robweychert.com