CJam, 36 35 34 32 30 байт
riP*30/_60/_C/]2m*::-:mc:mC$3=
Вывод в радианах. Я проверил решения для всех 86400 возможных входов.
Попробуйте онлайн в интерпретаторе CJam .
идея
Поскольку 2π радиан - это полный круг, каждый минутный / секундный интервал на часах составляет 2π / 60 = π / 30 радиан в ширину.
Таким образом, деление количества секунд на π / 30 дает положение секундной стрелки.
Минутная стрелка перемещается на одну шестидесятую часть темпа секундной стрелки, поэтому деление результата сверху на 60 дает положение минутной стрелки.
Аналогично, деление последнего результата на 12 дает положение часовой стрелки.
Обратите внимание, что наши три частных сверху не обязательно находятся в диапазоне [0,2π).
Вычисляя все девять возможных различий в углах рук, мы получаем три 0 (угловое расстояние между рукой и самой собой) и шесть расстояний между разными руками.
Если ближайшие руки находятся на половине, не включающей 12 , одно из отличий сверху будет желаемым результатом (мод 2π ).
Однако в 01:55:30 (например) часовая стрелка находится под углом 1,008 рад (57,75 градуса), а минутная стрелка - под углом 5,812 рад (333,00 градуса) от 12 , что дает разницу в 4,804 рад (275,25 град). Вычитая этот результат из полного круга, мы получаем угол, измеренный «в другом направлении», который равен 1,479 рад (84,75 рад).
Теперь вместо того, чтобы отображать каждый угол θ в [0,2π) и условно вычитать результат из π , мы можем просто вычислить arccos (cos (θ)) , поскольку cos является периодическим и четным, а arccos всегда дает значение в [ 0, π) .
Пропустив три наименьших результата (все ноль), четвертый наименьший будет желаемым результатом.
Код
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.
Альтернативная версия (34 байта)
rd6*_60/_C/]360f%2m*::m360X$f-+$6=
Вывод в градусах и тригонометрические функции не используются.
Попробуйте онлайн в интерпретаторе CJam .