CJam, 36 35 34 32 30 bayt
riP*30/_60/_C/]2m*::-:mc:mC$3=
Çıktı radyan cinsindendir. 86400 olası girişin çözümlerini doğruladım.
CJam yorumlayıcısında çevrimiçi deneyin .
Fikir
Yana 2π radyan saat tam bir tur, her dakika / saniye aralığı olduğu 2π / 60 = π / 30 geniş radyan.
Böylece, saniye sayısını π / 30'a bölmek ikinci elin konumunu verir.
Dakika ibresi, ikinci elin hızının altmışınında hareket eder, bu nedenle sonucun yukarıdan 60'a bölünmesi , dakika ibresi pozisyonunu verir.
Benzer şekilde, son sonucun 12'ye bölünmesi saat ibresinin pozisyonunu verir.
Yukarıdaki üç bölümümüzün mutlaka [0,2π) aralığında olmadığını unutmayın .
Ellerin açılarındaki dokuz olası farklılığın hepsini hesaplayarak, üç 0 '(bir el ile kendisi arasındaki açısal mesafe) ve farklı eller arasındaki altı mesafeyi elde ederiz .
En yakın eller 12 içermeyen bir yarıdaysa , yukarıdakilerden farklardan biri istenen çıkış olacaktır (mod 2π ).
Bununla birlikte, en 01:55:30 (örneğin), saat ibresi 1.008 rad (57.75 °) ve den 5,812 rad (333.00 °) bir açı ile dakikalık elin bir açıdadır , 12 4,804 rad bir fark vererek (275.25 derece). Bu sonucu tam bir turdan çıkararak, "diğer yönde" ölçülen ve 1.479 rad'e (84.75 rad) eşit olan açıyı elde ederiz.
Şimdi, daha doğrusu her açı haritalama daha İçeride ISTV melerin RWMAIWi'nin içinde [0,2π) ve şartlı sonucunu çıkararak tt , biz sadece hesapla arccos (cos (θ)) beri, cos periyodik ve hatta hem de ve arccos hep bir değer verir [ 0, π) .
En küçük üç sonucu (tümü sıfır) atladığınızda, dördüncü en küçük sonuç istenen çıktı olur.
kod
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.
Alternatif sürüm (34 bayt)
rd6*_60/_C/]360f%2m*::m360X$f-+$6=
Çıktı derece cinsindendir ve trigonometrik fonksiyon kullanılmaz.
CJam yorumlayıcısında çevrimiçi deneyin .