aboutsummaryrefslogtreecommitdiff
path: root/challenge-206/lubos-kolouch/java/ch-1.java
blob: 18d9a6fa3b81c4a637a6505b6761cbdd6d767ef2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import static org.junit.Assert.assertEquals;

import org.junit.Test;

public class ShortestTimeTest {

  public static int shortestTimeInMinutes(String[] times) {
    int minDiff = 24 * 60; // maximum possible difference in minutes
    for (int i = 0; i < times.length - 1; i++) {
      for (int j = i + 1; j < times.length; j++) {
        String[] parts1 = times[i].split(":");
        String[] parts2 = times[j].split(":");
        int h1 = Integer.parseInt(parts1[0]);
        int m1 = Integer.parseInt(parts1[1]);
        int h2 = Integer.parseInt(parts2[0]);
        int m2 = Integer.parseInt(parts2[1]);
        int diff = Math.abs((h1 - h2) * 60 + (m1 - m2));
        if (diff > 12 * 60) { // account for circular time
          diff = 24 * 60 - diff;
        }
        if (diff < minDiff) {
          minDiff = diff;
        }
      }
    }
    return minDiff;
  }

  @Test
  public void testExample1() {
    String[] times = {"00:00", "23:55", "20:00"};
    assertEquals(5, shortestTimeInMinutes(times));
  }

  @Test
  public void testExample2() {
    String[] times = {"01:01", "00:50", "00:57"};
    assertEquals(4, shortestTimeInMinutes(times));
  }

  @Test
  public void testExample3() {
    String[] times = {"10:10", "09:30", "09:00", "09:55"};
    assertEquals(15, shortestTimeInMinutes(times));
  }
}