Distance traveled by Hour and Minute hand in given Time interval

Given two numbers H and M which denotes the length of the hour and minute hand and two time intervals(say T1 & T2) in form of HH:MM, the task is to find the distance travelled by hour hand and minute hand between time T1 and T2.

Examples:

Input: H = 5, M = 7, T1 = “1:30”, T2 = “10:50”
Output:
Distance travelled by minute hand: 410.50144006906635
Distance travelled by hour hand: 24.434609527920614

Input: H = 4, M = 5, T1 = “1:30”, T2 = “10:50”
Output:
Distance travelled by minute hand: 293.21531433504737
Distance travelled by hour hand: 19.54768762233649

Approach:



  1. Find the difference between the two time intervals T1 and T2 by using the approach discussed in this article.
  2. Change the time duration obtained above into minutes as:
    Total Minutes = hours * 60 + minutes
    
  3. Since minute hand covers one rotation in 60 minutes therefore, number of rotations covered by minute hand(say rm) is given by rm = \frac{total Minutes}{60}
  4. Since hour hand covers one rotation in 60*12 = 720 minutes therefore, number of rotations covered by hour hand(say rh) is given by rh = \frac{total Minutes}{720}
  5. The total distance traverse by the hour hand is given by Total Distance = 2*Pi*H*rh
  6. The total distance traverse by the minute hand is given by Total Distance = 2*Pi*M*rm

Below is the implementation of the above approach:

Python

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python program for the above approach
  
import math 
  
# Function to remove ':' and convert
# it into an integer 
def removeColon(s): 
    if (len(s) == 4):
        s = s[:1]+s[2:]
      
    if (len(s) == 5): 
        s = s[:2]+s[3:]
      
    return int(s)
  
# function which find the difference
# between time interval
def diff(s1, s2):
      
    # Change string as 2:21 to 221
    time1 = removeColon(s1)
    time2 = removeColon(s2) 
  
    # Difference between hours 
    hourDiff = time2 // 100 - time1 // 100 - 1
  
    # Difference between minutes 
    minDiff = time2 % 100 + (60 - time1 % 100
  
    if (minDiff >= 60):
        hourDiff+= 1
        minDiff = minDiff - 60
  
    # Convert answer again in string
    # with ':' 
    res = str(hourDiff) + ':' + str(minDiff)
    return res
  
# Function for finding the distance travelled 
# by minute hand and hour hand
def disTravel(T1, T2, M, H):
      
    # Find the duration between these time
    dur = diff(T1, T2)
      
    # Remove colom from the dur and 
    # convert in int
    s = removeColon(dur)
  
    # Convert the time in to minute 
    # hour * 60 + min 
    totalMinute =(s//100)*60 + s % 100
  
    # Count min hand rotation
    rm = totalMinute / 60;
  
    # Count hour hand rotation
    rh = totalMinute / 720;
  
    # Compute distance traveled by min hand
    minuteDistance = rm * 2* math.pi * M;
  
    # Compute distance traveled by hour hand
    hourDistance = rh * 2* math.pi * H;
      
    return minuteDistance, hourDistance
  
  
# Driver Code
  
# Given Time Intervals
T1 ="1:30"
T2 ="10:50"
  
# Given hour and minute hand length 
H = 5
M = 7
  
# Function Call
minuteDistance, hourDistance = disTravel(T1, T2, M, H)
  
# Print the distance traveled by minute
# and hour hand
print("Distance traveled by minute hand: "
      ,minuteDistance)
print("Distance traveled by hour hand: "
      ,hourDistance )

chevron_right


Output:

Distance traveled by minute hand:  410.50144006906635
Distance traveled by hour hand:  24.434609527920614

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.