Here is the puzzle as written on the April 24, 2026 Fiddler on the Proof.
From Steve Curry comes a puzzle that’s right on schedule:
A standard analog clock includes an hour hand, a minute hand, and 60 minute markers, 12 of which are also hour markers.
At a certain time, both the hour hand and minute hand are both pointing directly at minute markers (either of which could also be an hour marker). The hour hand is 13 markers ahead (i.e., clockwise) of the minute hand.
At what time does this occur? (Don’t worry about a.m. vs. p.m. for this puzzle.)
If an hour hand is pointing directly at a minute marker, the minute hand MUST be on 0 (or 60), 12, 24, 36, or 48.
If the hour hand is 13 units in front of the minute hand, then we can do some checking to see which is consistent.
Minute hand on 0 means hour hand on 13. This would mean the it is 3 notches beyond 2 which is 2:36, contradicting the minute hand being on 0.
If the minute hand is on 12, the hour hand would be pointing directly at 25 which would mean it is 5:00, contradicting the minute hand being on 12.
If the minute hand is on 24, the hour hand would be pointing directly at 37 which would mean it is 7:24, which is consistent with the minute hand being on 24. Thus, the answer is 7:24. We’ll check the next two positions for completeness.
If the minute hand is on 36, the hour hand would be pointing directly at 49 which would mean it is 9:48, contradicting the minute hand being on 36.
If the minute hand is on 48, the hour hand would be pointing directly at 01 which would mean it is 12:12, contradicting the minute hand being on 48.
Here is the extra credit printed exactly as in the Fiddler on the Proof.
At various times of day, the minute and hour hands form a right angle. But is there a time of day when the hour hand, minute hand, and second hand together form two right angles, as illustrated below? If you can find such a time or times, what are they?
If you cannot find any such times, suppose the measures of the two nearly right angles formed by the three hands measure A and B degrees. What time or times of day minimize the square error function f(A, B) = (A − 90)2 + (B − 90)2?
Either way, your answer should be precise to at least a thousandth of a second. (Again, don’t worry about a.m. vs. p.m. for this puzzle.)
Let \(h\) be the hour of the time as a real number on the interval \([0,12)\) with the understanding that if \(h\) is on \([0,1)\), then we add 12 to \(h\) for reporting the time purposes only. The minute-mark position of \(h\) is \(5h\).
If \(m\) represents the minute value of the time, this can be found by \((h - \lfloor h \rfloor)*60\) where \(\lfloor h \rfloor\) represents the floor of \(h\). This can also be evaluated as \((60h)\mod 60\).
Candidates for the minute hand pointing direction are \((5h+15)\mod 60\), \((5h+30)\mod 60\), and \((5h+45)\mod 60\) (this last one is equivalent to \((5h-15)\mod 60\)). Thus, \(55h\) should be equivalent to 15, 30, or 45 modulo 60.
Let’s set up some candidate positions for the hour \(h\).
# The hour (minute mark positions) that will match up with the minute candidates
h <- sort(c(seq(15,15+60*10,60)*5/55,
seq(30,30+60*10,60)*5/55,
seq(45,45+60*10,60)*5/55))/5
h
## [1] 0.2727273 0.5454545 0.8181818 1.3636364 1.6363636 1.9090909
## [7] 2.4545455 2.7272727 3.0000000 3.5454545 3.8181818 4.0909091
## [13] 4.6363636 4.9090909 5.1818182 5.7272727 6.0000000 6.2727273
## [19] 6.8181818 7.0909091 7.3636364 7.9090909 8.1818182 8.4545455
## [25] 9.0000000 9.2727273 9.5454545 10.0909091 10.3636364 10.6363636
## [31] 11.1818182 11.4545455 11.7272727
# Calculate the minute position that goes with the hour position.
m <- (h - floor(h))*60
# Check that all differences between the minute mark position of the hour and
# the minute hand are 15, 30, and 45.
all(c(15,30,45) %in% abs((5*h-m) %% 60))
## [1] TRUE
The minute-mark of the second hand can be found by \((m - \lfloor m \rfloor)*60\).
Now, let us set up a function that takes as input the hour, \(h\), computes the minute- mark positions of the minute hand and the second hand, computes the smallest two angles \(A\) and \(B\) that form between \(h\), \(m\), and \(s\), and then outputs \((A-90)^2 + (B-90)^2\).
# h is input as an hour between [0,12)
degSqErr <- function(h){
# compute the minute mark of the minute hand
m <- (h - floor(h))*60
# compute the minute mark of the second hand
s <- (m - floor(m))*60
# Compute the six different angles between h, m, and s without regard for
# direction
x1 <- ((5*h-s) %% 60)*6
x2 <- ((5*h-m) %% 60)*6
x3 <- ((m-s) %% 60)*6
x4 <- ((s-5*h) %% 60)*6
x5 <- ((m-5*h) %% 60)*6
x6 <- ((s-m) %% 60)*6
# Find the smallest two angles and define them as A and B
A <- sort(c(x1,x2,x3,x4,x5,x6))[1]
B <- sort(c(x1,x2,x3,x4,x5,x6))[2]
# return the squared error
return((A-90)^2 + (B-90)^2)
}
Now, cycling through our candidates, let’s find the times that produce the minimum squared error.
minSqErrTimes <- c()
minSqErrValues <- c()
n <- length(h)
for(i in 1:n){
t <- optim(h[i], degSqErr, lower = h[i] - .05, upper = h[i] + .05)$par
minSqErrTimes <- c(minSqErrTimes, t)
minSqErrValues <- c(minSqErrValues, degSqErr(t))
}
minSqErrValues
## [1] 7.916072e-01 7.159518e-02 4.567864e+01 6.265931e-02 6.443566e-01
## [6] 4.038812e-01 4.525754e+03 6.690172e+00 1.954785e+00 1.453972e-01
## [11] 7.955020e-03 4.668867e+00 6.265931e-02 5.799209e+00 1.615525e-02
## [16] 1.358657e+01 1.164694e+02 1.358657e+01 1.615525e-02 5.799209e+00
## [21] 6.265931e-02 4.668867e+00 7.955020e-03 1.453972e-01 1.954785e+00
## [26] 6.690172e+00 4.525754e+03 4.038812e-01 6.443566e-01 6.265931e-02
## [31] 4.567864e+01 7.159518e-02 7.916072e-01
min(minSqErrValues)
## [1] 0.00795502
minSqErrValues[c(11,23)]
## [1] 0.00795502 0.00795502
minSqErrTimes[c(11,23)]
## [1] 3.8178 8.1822
The times that result in the minimum squared error are 3.8177996 and 8.1822004. That is, 3 hours, 49 minutes, and 4.078567 seconds and 8 hours, 10 minutes, and 55.92143 seconds.
timeActual <- function(h){
m <- (h - floor(h))*60
s <- (m - floor(m))*60
m <- ifelse(m<10,paste0("0",trunc(m),sep=""),paste0(trunc(m)))
s <- ifelse(s<10,paste0("0",round(s),sep=""),paste0(round(s)))
if(h<1){h <- 12*h}
return(paste0(trunc(h),":",m,":",s,sep=""))
}
timeActual(minSqErrTimes[11])
## [1] "3:49:04"
timeActual(minSqErrTimes[23])
## [1] "8:10:56"