Le Monde puzzle [#737]

[This article was first published on Xi'an's Og » R, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
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="")
radii=c("gold","sienna","steelblue","tomato")

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)
    lines(c(0,sin(2*pi*suite[j]/48)),c(0,cos(2*pi*suite[j]/48)),col=radii[j])

  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

To leave a comment for the author, please follow the link and comment on their blog: Xi'an's Og » R.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)