## Le Monde puzzle [#1009] An incomprehensible (and again double) Le Monde mathematical puzzle (despite requests to the authors! The details in brackets are mine.):

1. A [non-circular] chain of 63 papers clips can be broken into sub-chains by freeing one clip [from both neighbours] at a time. At a given stage, considering the set of the lengths of these sub-chains, the collection of all possible sums of these lengths is a subset of {1,…,63}. What is the minimal number of steps to recover the entire set {1,…,63}?  And what is the maximal length L of a chain of paper clips that allows this recovery in 8 steps?
2.  A tri-colored chain of 200 paper clips starts with a red, a blue and a green clip. Removing one clip every four clips produces a chain of 50 removed clips identical to the chain of 50 first clips of the original chain and a chain of remaining 150 clips identical to the 150 first clips of the original chain. Deduce the number of green, red, and blue clips. The first question can be easily tackled by random exploration. Pick one number at random between 1 and 63, and keep picking attached clips until the set of sums is {1,…,63}. For instance,

```rebreak0]
sumz=cumsum(sample(difz))
for (t in 1:1e3)
sumz=unique(c(sumz,cumsum(sample(difz))))
if (length(sumz)<63)
brkz=rebreak(sort(c(brkz,sample((1:63)[-brkz],1))))
return(brkz)}
```

where I used sampling to find the set of all possible partial sums. Which leads to a solution with three steps, at positions 5, 22, and 31. This sounds impossibly small but the corresponding lengths are

1 1 1 4 8 16 32

from which one can indeed recover by summation all numbers till 63=2⁶-1. From there, a solution in 8 steps can be found by directly considering the lengths

1 1 1 1 1 1 1 1 9 18=9+8 36=18+17+1 72 144 288 576 1152 2303

whose total sum is 4607. And with breaks

10 29 66 139 284 573 1150 2303

The second puzzle is completely independent. Running another R code reproducing the constraints leads to

```tromcol=function(N=200){
vale=rep(0,N)
vale[1:3]=1:3
while (min(vale)==0){
vale[4*(1:50)]=vale[1:50]
vale[-(4*(1:50))]=vale[1:150]}
return(c(sum(vale==1),sum(vale==2),sum(vale==3)))}
```

and to 120 red clips, 46 blue clips and 34 green clips.

This site uses Akismet to reduce spam. Learn how your comment data is processed.