Mike Brasher

Aerospace Engineer

A Weighty Matter

Removing Weights From a Barbell

One of the hobbies that I have taken up over the past few years has been lifting weights. I mostly follow powerlifting style routines, and those tend to involve relatively long rests between sets which leaves a lot of idle time. During one such break recently, I began to ponder the different orders one could remove the weights from a barbell.

One mistake people have to make at least once is to absentmindedly remove all of the weights from one side of the bar. This works up to a point, but if there is enough weight on the other side, the bar will dramatically tip over and the weights will come crashing down. As a practical matter, you can get away with a difference of two 45 lb plates between the sides, though a difference of three plates spells disaster. The general advice to avoid this is to simply remove the weights from alternating sides, keeping the center of gravity between the supports. To be impractical, given that you start with n plates on each side, how many ways can you remove them, both safely and unsafely?

Unconstrained Problem

Let’s tackle the simpler problem first, where we ignore physics and don’t restrict how unbalanced the bar can be. Given n weights on each side, let U_n be the total number of ways to remove them. Label weights on each side L_1, L_2, ... L_n, and R_1, R_2, ... R_n, going from the outside in. Below is an example for n = 3:

For this case, we can simply list all twenty possible removal orders by inspection:

  1. L1, L2, L3, R1, R2, R3
  2. L1, L2, R1, L3, R2, R3
  3. L1, L2, R1, R2, L3, R3
  4. L1, L2, R1, R2, R3, L3
  5. L1, R1, L2, L3, R2, R3
  6. L1, R1, L2, R2, L3, R3
  7. L1, R1, L2, R2, R3, L3
  8. L1, R1, R2, L2, L3, R3
  9. L1, R1, R2, L2, R3, L3
  10. L1, R1, R2, R3, L2, L3
  11. R1, L1, L2, L3, R2, R3
  12. R1, L1, L2, R2, L3, R3
  13. R1, L1, L2, R2, R3, L3
  14. R1, L1, R2, L2, L3, R3
  15. R1, L1, R2, L2, R3, L3
  16. R1, L1, R2, R3, L2, L3
  17. R1, R2, L1, L2, L3, R3
  18. R1, R2, L1, L2, R3, L3
  19. R1, R2, L1, R3, L2, L3
  20. R1, R2, R3, L1, L2, L3

If we were to list all the permutations of the six plates, there would be 6! = 720 possible combinations. But, notice that even though the left right order changes, we always take off the plates from the outside first, so L1 always precedes L2 which always precedes L3. For each of the listed orders, you could permute the three left plates in 3!=6 ways, and the three right plates in six ways. Thus, each of the listed orders corresponds to 36 of the 720 total combinations. Generalizing this observation, there are a total of

(1)   \begin{equation*} U_n = \frac{2n!}{n!n!} =\left(\begin{array}{c} 2n \\ n \end{array}\right)\end{equation*}

possible unconstrained orders. Given 2n slots, we essentially choose where to place the n left (red) plates. That was easy!

Constrained Problem

Things get more complicated when we restrict how unbalanced the loading can be. At any point in time, define a signed delta loading by the number of plates still on the bar:

(2)   \begin{equation*}\Delta = n_L - n_R\end{equation*}

We always start out with \Delta=0, and we end up there as well. For a particular removal order, let \Delta_{max} be the maximum value that \lvert \Delta \rvert reaches at some point during the process, and let C_n^m be the number of ways to remove n plates that have \Delta_{max} exactly equal to m. It’s clear the minimum and maximum of \Delta_{max} are 1 and n respectively, and these are the easiest cases to count directly.

If we limit \Delta_{max} to 1 (the physically safe option, and what you should do in practice), we can think of each pair of plates as joined, and we simply choose one of two orders, LR or RL, for each independently. Thus, there are a total of 2^n removal orders with a \Delta_{max} = 1:

(3)   \begin{equation*}C_n^1 = 2^n\end{equation*}

The number of removal orders with \Delta_{max} = n is even simpler. To reach that \Delta, you have to remove all of the plates on one side before removing any from the other, so it’s literally just a choice between two orders: LL…LRR…R and RR…RLL…L

(4)   \begin{equation*}C_n^n = 2\end{equation*}

For our example problem with three plates, that means C_3^1=8 and C_3^3=2, from which we can deduce that C_3^2=10. That works for this small case, but how can we calculate these medial values directly? To answer this, let’s introduce a way to visualize removal orders.

Removal Order Graph

The graph below shows a potential order to remove weights with n=4. We start in the upper left corner with four weights on each side. If we remove a weight from the right side of the bar, we travel right on the graph, and if we remove a weight from the left side, we travel down. The path always starts on the upper left corner and always terminates at the lower right corner. Since we don’t add plates back to the bar, we can never travel left or up on the graph.

Particular values of \Delta correspond to the labeled diagonals. For the case of the example path shown in green, \Delta reaches a high of 2 before doing down to a low of -1, thus making \Delta_{max} = 2 for this path.

Since paths on this graph travel in only two directions, to arrive at node C, you would have to first path through either node A or node B. This means that if we know the number of paths that go through both nodes, p_A and p_B, then we can simply sum them to get the number of paths that go through node C:

(5)   \begin{equation*}p_C = p_A + p_B\end{equation*}

We can easily do this for all the nodes in the graph, with the initial condition that there is one way to get to the starting node. For the unconstrained case we have:

Since we can’t travel up, the nodes along the top of the graph inherit the number paths from the node to the left. This corresponds to just taking all the plates from the right side one by one. Similarly for the left side. So, by summing the nodes on the graph, we conclude there are 70 ways to remove four plates. This matches our earlier calculation from eq. 1. Observant readers will notice this is just a truncation of Pascal’s triangle. Individual nodes in the triangle can be calculated directly via binomial coefficients, due to the identity:

(6)   \begin{equation*}\left(\begin{array}{c} n \\ k \end{array}\right) = \left(\begin{array}{c} n-1 \\ k-1 \end{array}\right) + \left(\begin{array}{c} n-1 \\ k \end{array}\right) \end{equation*}

Which can be seen as another way of arriving at eq. 1.

Instead of directly calculating C_4^3, we can instead calculate all the paths with \Delta_{max} less than or equal to three. Denote this by:

(7)   \begin{equation*}S_4^3 = C_4^1 + C_4^2 + C_4^3 =\sum_{i=1}^3 C_4^i\end{equation*}

We can represent this on our graph by simply setting unreachable nodes to zero, i.e. setting the upper right and lower left nodes to zero:

Which means there are a total of 68 ways to remove four plates without letting \Delta_{max} exceed three. Similarly, limiting it to a two plate difference gives:

And hence, S_4^2 = 54, and we can conclude that:

(8)   \begin{equation*}C_4^3 = S_4^3 + S_4^2 = 68 - 54 = 14\end{equation*}

And finally, when we limit the differential to one plate:

Which validates the result from eq. 3.

Recursive Solution

The unconstrained problem had a compact answer in eq. 1, but I can’t see any concise way to describe the solution described above using binomial coefficients. However, we can describe the answer recursively. Label the nodes following the order of binomial coefficients in Pascal’s triangle:

Let S(n,k,m) be the value of node (n,k) with the constraint that \Delta_{max} <= m. We can calculate \Delta directly for each node:

(9)   \begin{equation*}\Delta = 2k-n\end{equation*}

And thus we can recursively calculate:

(10)   \begin{equation*}S(n,k,m) = \left\{\begin{array}{ll}0 & ,\left| \Delta \right| > m \\1 & ,k=0 \textrm{ or } n \\S(n-1, k, m) + S(n-1, k-1, m) & ,\textrm{otherwise}\end{array} \right.\end{equation*}

And now we have a method to solve our very pressing problem!