CJam, 36 35 34 32 30 bytes
riP*30/_60/_C/]2m*::-:mc:mC$3=
La salida está en radianes. He verificado las soluciones para todas las 86400 entradas posibles.
Pruébelo en línea en el intérprete de CJam .
Idea
Dado que 2π radianes es una vuelta completa, cada intervalo de minuto / segundo en el reloj es de 2π / 60 = π / 30 radianes de ancho.
Por lo tanto, dividiendo el número de segundos por π / 30 produce la posición de la manecilla de segundos.
La manecilla de minutos se mueve a la sexagésima parte del ritmo de la manecilla de segundos, dividiendo el resultado de arriba por 60 produce la posición de la manecilla de minutos.
Del mismo modo, dividiendo el último resultado por 12 produce la posición de la manecilla de la hora.
Tenga en cuenta que nuestros tres cocientes de arriba no están necesariamente en el rango [0,2π).
Al calcular las nueve diferencias posibles de los ángulos de las manos, obtenemos tres 0 (distancia angular entre una mano y sí mismo) y las seis distancias entre las diferentes manos.
Si las manos más cercanas están en una mitad que no incluye 12 , una de las diferencias de arriba será la salida deseada (mod 2π ).
Sin embargo, a las 01:55:30 (por ejemplo), la manecilla de la hora está en un ángulo de 1.008 rad (57.75 grados) y la manecilla de los minutos en un ángulo de 5.812 rad (333.00 grados) desde 12 , dando una diferencia de 4.804 rad (275,25 grados). Al restar este resultado de una vuelta completa, obtenemos el ángulo medido "en la otra dirección", que equivale a 1.479 rad (84.75 rad).
Ahora, en lugar de mapear cada ángulo θ en [0,2π) y restar condicionalmente el resultado de π , simplemente podemos calcular arccos (cos (θ)) , ya que cos es tanto periódico como par, y arccos siempre produce un valor en [ 0, π) .
Saltando los tres resultados más pequeños (todos cero), el cuarto más pequeño será el resultado deseado.
Código
ri e# Read an integer from STDIN.
P*30/ e# Multiply by π and divide by 30.
_60/ e# Divide a copy by 60.
_C/ e# Divide a copy by 12.
]2m* e# Push the array of all pairs of quotients.
::- e# Replace each pair by its difference.
:mc e# Apply cosine to each difference.
:mC e# Apply arccosine to each cosine.
$3= e# Sort and select the fourth smallest element.
Versión alternativa (34 bytes)
rd6*_60/_C/]360f%2m*::m360X$f-+$6=
La salida está en grados y no se utilizan funciones trigonométricas.
Pruébelo en línea en el intérprete de CJam .