Archive for library
library, whatzat???
Posted in Books, Kids, pictures, University life with tags banned books, ENSAE, Francis Bacon, library, Monte Carlo Statistical Methods, online book, students, Trinity College Dublin on December 19, 2022 by xi'anbanned books week
Posted in Statistics with tags American Library Association, banned books, censorship, Ender's Game, Huckleberry Finn, Hunger Games, library, National Coalition Against Censorship, Persepolis, The Curious Incident of the Dog in the Night-Time, The Handmaid's Tale, To Kill a Mockingbird on September 28, 2020 by xi'anLe Monde puzzle [#1076]
Posted in Books, Kids, R, Travel with tags Brexit, brute-force solution, Gruyère, int2bits, Le Monde, library, mathematical puzzle, pizza, R, University of Warwick on December 27, 2018 by xi'anA cheezy Le Monde mathematical puzzle : (which took me much longer to find [in the sense of locating] than to solve, as Warwick U does not get a daily delivery of the newspaper [and this is pre-Brexit!]):
Take a round pizza (or a wheel of Gruyère) cut into seven identical slices and turn one slice upside down. If the only possibly moves are to turn three connected slices to their reverse side, how many moves at least are needed to recover the original configuration? What is the starting configuration that requires the largest number of moves?
Since there are ony N=2⁷ possible configurations, a brute force exploration is achievable, starting from the perfect configuration requiring zero move and adding all configurations found by one additional move at a time… Until all configurations have been visited and all associated numbers of steps are stable. Here is my R implementation
nztr=lengz=rep(-1,N) #length & ancestor nztr[0+1]=lengz[0+1]=0 fundz=matrix(0,Z,Z) #Z=7 for (i in 1:Z){ #only possible moves fundz[i,c(i,(i+1)%%Z+Z*(i==(Z-1)),(i+2)%%Z+Z*(i==(Z-2)))]=1 lengz[bit2int(fundz[i,])+1]=1 nztr[bit2int(fundz[i,])+1]=0} while (min(lengz)==-1){ #second loop omitted for (j in (1:N)[lengz>-1]) for (k in 1:Z){ m=bit2int((int2bit(j-1)+fundz[k,])%%2)+1 if ((lengz[m]==-1)|(lengz[m]>lengz[j]+1)){ lengz[m]=lengz[j]+1;nztr[m]=j} }}
Which produces a path of length five returning (1,0,0,0,0,0,0) to the original state:
> nztry(2) [1] 1 0 0 0 0 0 0 [1] 0 1 1 0 0 0 0 [1] 0 1 0 1 1 0 0 [1] 0 1 0 0 0 1 0 [1] 1 1 0 0 0 0 1 [1] 0 0 0 0 0 0 0
and a path of length seven in the worst case:
> nztry(2^7) [1] 1 1 1 1 1 1 1 [1] 1 1 1 1 0 0 0 [1] 1 0 0 0 0 0 0 [1] 0 1 1 0 0 0 0 [1] 0 1 0 1 1 0 0 [1] 0 1 0 0 0 1 0 [1] 1 1 0 0 0 0 1 [1] 0 0 0 0 0 0 0
Since the R code was written for an arbitrary number Z of slices, I checked that there is no solution for Z being a multiple of 3.