The Riddler, which I have followed for many years, has been discontinued by FiveThirtyEight, but its producer, Zach Wissner-Gross, has launched a personal website to keep considering a weekly mathematical puzzle. The Fiddler on the Proof! Expect thus more ‘Og entries in this category!
Archive for FiveThirtyEight
so long, and thanks for all the quests
Posted in Books, Kids, R with tags 538, ABC News, blogging, FiveThirtyEight, mathematical puzzle, Og, riddle, The Fiddler, The Riddler, Zach Wissner-Gross on October 25, 2023 by xi'anTribonacci sequence
Posted in Books, Kids, R with tags brute-force solution, Fibonacci, FiveThirtyEight, mathematical puzzle, R, The Riddler on January 3, 2023 by xi'anA simplistic puzzle from The Riddler when applying brute force:
A Tribonacci sequence is based on three entry integers a ≤ b ≤ c, and subsequent terms are the sum of the previous three. Among Tribonacci sequences containing 2023, which one achieves the smallest fourth term, a+b+c ?
The R code
tri<-function(a,b,e){ while(F<2023){ F=a+b+e;a=b;b=e;e=F} return(F<2024)} sol=NULL;m=674 for(a in 1:m) for(b in a:m) for(e in b:m) if(tri(a,b,e)){ sol=rbind(sol,c(a,b,e))}
leads to (1,1,6) as the solution… Incidentally, this short exercise led me to finally look for a fix to entering vectors as arguments of functions requesting lists:
do.call("tri",as.list(sol[2023,]))
another drawer of socks
Posted in Books, Kids, R, Statistics with tags ABC, combinatorics, FiveThirtyEight, R, simulation, socks, The Riddler on November 6, 2022 by xi'anA socks riddle from the Riddler but with no clear ABC connection! Twenty-eight socks from fourteen pairs of socks are taken from a drawer, one by one, and laid on a surface that only fit nine socks at a time, with complete pairs removed. What is the probability that all pairs are stored without running out of space? No orphan socks then!!
Writing an R code for this experiment is straightforward
for(v in 1:1e6){ S=sample(rep(1:14,2)) x=S[1] for(t in 2:18){ if(S[t]%in%x){x=x[S[t]!=x]}else{x=c(x,S[t])} if(sum(!!x)>9){ F=F+1;break()}}}
and it returns a value quite close to 0.7 for the probability of success. I was expecting a less brute-force resolution but the the Riddler only provided the answer of 70.049 based on the above tree of probabilities (which I was too lazy to code).
birthday paradox, one by one
Posted in Books, Kids, pictures, Statistics with tags birthday cake, birthday problem, codegolf, FiveThirtyEight, R, The Riddler on November 1, 2022 by xi'anAn easy riddle, riding the birthday paradox. Namely how many people on average have to sequentially enter a room for a double birthday to occur?
The answer is straightforward,
as only the last person in can share a birthday with those already in. This sum equals 24.62. Since the “magic number” is 23, this may sound wrong but the median attached to the above distribution is truly 23. My R code is
q=rep(1,a<-366)/365 for(n in 3:a)q[n]=q[n-1]*(1+1/(n-2)-(n-1)/365) sum(q[-1]*(2:a))
optimal Gaussian zorbing
Posted in Books, Kids, R, Statistics with tags FiveThirtyEight, non-central chi-square distribution, puzzle, R, simulated annealing, The Riddler, zorbing on August 30, 2022 by xi'anA zorbing puzzle from the Riddler: cover the plane with four non-intersecting disks of radius one towards getting the highest probability (under the standard bivariate Normal distribution).
As I could not see a simple connection between the disks and the standard Normal, beyond the probability of a disk being given by a non-central chi-square cdf (with two degrees of freedom), I (once again) tried a random search by simulated annealing, which ended up with a configuration like the above, never above 0.777 using a pedestrian R code like
for(t in 1:1e6){# move the disk centres Ap=A+vemp*rnorm(2) Bp=B+vemp*rnorm(2) while(dist(rbind(Ap,Bp))<2)Bp=B+vemp*rnorm(2) Cp=C+vemp*rnorm(2) while(min(dist(rbind(Ap,Bp,Cp)))<2)Cp=C+vemp*rnorm(2) Dp=D+vemp*rnorm(2) while(min(dist(rbind(Ap,Bp,Cp,Dp)))<2)Dp=D+vemp*rnorm(2) #coverage probability pp=pchisq(1,df=2,ncp=Ap%*%Ap)+pchisq(1,df=2,ncp=Bp%*%Bp)+ pchisq(1,df=2,ncp=Cp%*%Cp)+pchisq(1,df=2,ncp=Dp%*%Dp) #simulated annealing step if(log(runif(1))<(pp-p)/sqrt(temp)){ A=Bp;B=Cp;C=Dp;D=Ap;p=pp if (sol$val<p) sol=list(val=pp,pos=rbind(A,B,C,D))} temp=temp*.9999}
I also tried a simpler configuration where all disk centres were equidistant from a reference centre, but this led to a lower “optimal” probability. I was looking forward the discussion of the puzzle, to discover if anything less brute-force was possible! But there was no deeper argument there beyond the elimination of other “natural” configurations (and missing the non-central χ² connection!). Among these options, having two disks tangent at (0,0) were optimal. But the illustration was much nicer: