Distance traveled by Hour and Minute hand in given Time interval - GeeksforGeeks

30 Sep, 2021
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 traveled 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: 
Find the difference between the two time intervals T1 and T2 by using the approach discussed in this article.
Change the time duration obtained above into minutes as: 
Total Minutes = hours * 60 + minutes
Since minute hand covers one rotation in 60 minutes, therefore, number of rotations covered by minute hand(say rm) is given by 
Since hour hand covers one rotation in 60*12 = 720 minutes, therefore, number of rotations covered by hour hand(say rh) is given by 
The total distance traverse by the hour hand is given by 
The total distance traverse by the minute hand is given by 
Below is the implementation of the above approach:
Python
# Python program for the above approach import math # Function to remove ':' and convert# it into an integerdef 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 intervaldef 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 handdef disTravel(T1, T2, M, H):         # Find the duration between these time    dur = diff(T1, T2)         # Remove colon 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 IntervalsT1 ="1:30"T2 ="10:50" # Given hour and minute hand lengthH = 5M = 7 # Function CallminuteDistance, hourDistance = disTravel(T1, T2, M, H) # Print the distance traveled by minute# and hour handprint("Distance traveled by minute hand: "      ,minuteDistance)print("Distance traveled by hour hand: "      ,hourDistance )
Distance traveled by minute hand:  410.50144006906635
Distance traveled by hour hand:  24.434609527920614
 
kashishsoda
Time and Distance
Geometric
Mathematical
Mathematical
Geometric
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Haversine formula to find distance between two points on a sphere
Program to find slope of a line
Equation of circle when three points on the circle are given
Program to find line passing through 2 Points
Maximum Manhattan distance between a distinct pair from N coordinates
Program for Fibonacci numbers
Write a program to print all permutations of a given string
C++ Data Types
Set in C++ Standard Template Library (STL)
Coin Change | DP-7