CJam, 36 35 34 32 30 byte
riP*30/_60/_C/]2m*::-:mc:mC$3=
Đầu ra là bằng radian. Tôi đã xác minh các giải pháp cho tất cả 86400 đầu vào có thể.
Hãy thử trực tuyến trong trình thông dịch CJam .
Ý tưởng
Vì 2π radian là một vòng đầy đủ, mỗi khoảng thời gian phút / giây trên đồng hồ là 2π / 60 = π / 30 radian.
Do đó, chia số giây cho π / 30 mang lại vị trí của kim giây.
Kim phút di chuyển với tốc độ một phần sáu của tốc độ của kim giây, do đó, chia kết quả từ trên cho 60 sẽ mang lại vị trí của kim phút.
Tương tự như vậy, chia kết quả cuối cùng cho 12 mang lại vị trí của kim giờ.
Lưu ý rằng ba thương số của chúng tôi từ trên không nhất thiết phải nằm trong phạm vi [0,2π).
Bằng cách tính toán tất cả chín điểm khác biệt có thể có của các góc của bàn tay, chúng ta có được ba 0 (khoảng cách góc giữa một bàn tay và chính nó) và sáu khoảng cách giữa các bàn tay khác nhau.
Nếu các tay gần nhất nằm trên một nửa không bao gồm 12 , một trong những khác biệt ở trên sẽ là đầu ra mong muốn (mod 2π ).
Tuy nhiên, vào lúc 01:55:30 (ví dụ), kim giờ ở góc 1,008 rad (57,75 độ) và kim phút ở góc 5,812 rad (333,00 độ) so với 12 , cho chênh lệch 4,804 rad (275,25 độ). Bằng cách trừ kết quả này từ một vòng đua đầy đủ, chúng ta thu được góc đo "theo hướng khác", tương đương với 1.479 rad (84,75 rad).
Bây giờ, thay vì ánh xạ từng góc θ trong [0,2π) và trừ đi một cách có điều kiện kết quả từ π , chúng ta có thể chỉ cần tính arccos (cos (θ)) , vì cos là định kỳ và chẵn, và arccos luôn mang lại giá trị trong [ 0, π) .
Bỏ qua ba kết quả nhỏ nhất (tất cả bằng không), nhỏ nhất thứ tư sẽ là đầu ra mong muốn.
Mã
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.
Phiên bản thay thế (34 byte)
rd6*_60/_C/]360f%2m*::m360X$f-+$6=
Đầu ra được tính bằng độ và không có hàm lượng giác nào được sử dụng.
Hãy thử trực tuyến trong trình thông dịch CJam .