CJam, 36 35 34 32 30 बाइट्स
riP*30/_60/_C/]2m*::-:mc:mC$3=
आउटपुट रेडियंस में है। मैंने सभी 86400 संभावित इनपुट के लिए समाधानों का सत्यापन किया है।
CJam दुभाषिया में इसे ऑनलाइन आज़माएं ।
विचार
चूंकि 2π रेडियन एक पूर्ण गोद है, इसलिए घड़ी पर प्रत्येक मिनट / सेकंड का अंतराल 2π / 60 = is / 30 इंच चौड़ा है।
इस प्रकार, सेकंड की संख्या को विभाजित करके divid / 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 दुभाषिया में इसे ऑनलाइन आज़माएं ।