2013-04-06 2 views
1

Приведенный 2 раз (как int) на часовом борту, я должен рассчитать минимальное расстояние между ними.Минимальное расстояние между 2-х часовыми механизмами

enter image description here

Например -

d(12,1) = 1 //not 11 
d(3,5) = 2 
d(10,10) = 0 

Какой самый быстрый способ для этого?

+0

Я видел подобную проблему, но участие минут, данный вход как список строк, например «23:59», «00:00», также запрашивают минимальное расстояние в минуту (1, а не 1439) – Kevman

ответ

2

Если a и b взяты из 1 в 12:

min(abs(a - b), 12 - abs(a - b)) 
2

Что вы пробовали?

Dim dif = Math.Abs((t2 + 6) Mod 12 - (t1 + 6) Mod 12) 
1

Чистая арифметика (без каких-либо библиотек):

int d(int first, int second){ 
    int temp = first - second; 
    temp < 0? temp *=-1 :temp ; 

    int distance = temp > 6? 12-temp:temp; 

    return distance; 
} 
Смежные вопросы