Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

The puzzle in the weekend edition of Le Monde this week can be expressed as follows:

Consider four integer sequences (xn), (yn), (zn), and (wn), such that

$x_0=0 < y_0 < z_0 < w_0 <48$

and, if u=(xn,yn,zn,wn), for i=1,…,4,

otherwise. Find the first return time n (if any) such that xn=0. Find the value of (y0,z0,w0) that minimises this return time.

The difficulty stands with the constraint that the sequences only take integer values, which eliminates a lot of starting values. I wrote an R code that corresponds to this puzzle:

library(schoolmath)
nodd=TRUE
while (nodd){

suite=start=c(0,sort(2*sample(1:23,3)))
clock=seq(0,48,le=49)*2*pi/48
clock=rbind(sin(clock),cos(clock))
plot(clock[1,],clock[2,],type="l", axes=F,xlab="",ylab="")

for (t in 1:10^5){

for (j in 1:4){

if (suite[j]<max(suite)){
suite[j]=((suite[j]+min(suite[suite>suite[j]]))/2)%%48
}else{
suite[j]=((suite[j]+48+min(suite[-j]))/2)%%48}
}

plot(clock[1,],clock[2,],type="l", axes=F,xlab="",ylab="")
for (j in 1:4)

if ((suite[1]==0)||(max(is.decimal(suite))==1)){
nodd=(max(is.decimal(suite))==1)
print(t)
break()}
}}


but it fails to produce a result, always bumping into unacceptable starting values after one or two (rarely three) iterations! So either the starting conditions are very special out of the 23*22*21/6=1771 possible values of sort(2*sample(1:23,3)) or…I missed a point in the original puzzle.

Filed under: R Tagged: Le Monde, mathematical puzzle, R