- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTimeDiff.java
More file actions
Latest commit
116 lines (104 loc) · 3.28 KB
/
Copy pathTimeDiff.java
File metadata and controls
116 lines (104 loc) · 3.28 KB
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
importjava.io.File;
importjava.io.FileNotFoundException;
importjava.util.ArrayList;
importjava.util.Scanner;
publicclassTimeDiff {
staticStringdayslist[] = newString[]{"Mon","Tues","Wed","Thurs","Fri","Sat","Sun"};
publicstaticvoidmain(String[] args) throwsFileNotFoundException {
parseData(args[0]);
}
publicstaticvoidparseData(Stringfilename) throwsFileNotFoundException {
Scannersc = newScanner(newFile(filename));
ArrayList<String> data = newArrayList<String>();
while(sc.hasNext())
data.add(sc.nextLine());
sc.close();
booleandiffArr[][][] = newboolean[data.size()][7][24];
inti = 0;
for(Stringtimes:data) {
//System.out.println(times);
String[] days = times.split(", ");
//System.out.println(i);
for(Stringday_str:days) {
String[] day_info = day_str.split("[.] ");
intday = getDayIndex(day_info[0]);
//System.out.println(day_info[0]+"--"+day);
Stringrange[] = day_info[1].split(" - ");
//System.out.println(day_info[1]);
inthour1 = getHourIndexes(day_info[1])[0], hour2 = getHourIndexes(day_info[1])[1];
//System.out.println(range[0]+"-"+range[1]+" == "+hour1+"-"+hour2);
for(intj = hour1; j < hour2; j++)
diffArr[i][day][j-1] = true;
}
//System.out.println("\n");
i++;
}
booleanandedArr[][] = newboolean[7][24];
for(intr = 0; r < andedArr.length; r++)
for(intc = 0; c < andedArr[r].length; c++)
andedArr[r][c] = true;
for(i = 0; i < diffArr.length; i++) {
//printTimes(diffArr[i]);
//System.out.println("\n");
for(intr = 0; r < diffArr[i].length; r++)
for(intc = 0; c < diffArr[i][r].length; c++)
andedArr[r][c] &= diffArr[i][r][c];
}
System.out.println("Intersection of hours available:\n(first column is 1 AM, last is midnight)");
printTimes(andedArr);
}
publicstaticvoidprintTimes(boolean[][] matrix) {
System.out.print("\t");
for(inti = 0; i < matrix[0].length; i++)
System.out.print((i+1)%10);
System.out.println();
for(intr = 0; r < matrix.length; r++) {
System.out.print(dayslist[r]+":\t");
for(intc = 0; c < matrix[0].length; c++) {
intnum = (matrix[r][c]) ? 1 : 0;
System.out.print(num);
}
System.out.println();
}
System.out.print("\t");
for(inti = 0; i < matrix[0].length; i++)
System.out.print((i+1)%10);
System.out.println();
}
publicstaticint[] getHourIndexes(Stringrange) {
String[] tokens = range.split(" ");
Stringhours[] = range.split(" - ");
intindex1 = getHourIndex(hours[0]),
index2 = getHourIndex(hours[1]);
if (tokens.length < 5) {
Stringsuffix = tokens[3];
if (suffix.equals("PM"))
index1+=12;
elseif (suffix.equals("AM") && index1 == 12)
index1 = 24;
}
returnnewint[]{index1, index2};
}
publicstaticintgetHourIndex(Stringhour) {
Stringtokens[] = hour.split(" ");
intnum = 0;
if (hour.split(":").length == 1)
num = Integer.parseInt(tokens[0]);
else
num = Integer.parseInt(hour.split(":")[0]);
if (tokens.length > 1) {
Stringsuffix = tokens[1];
if (suffix.equals("PM"))
num+=12;
elseif (suffix.equals("AM") && num == 12)
num = 24;
}
returnnum;
}
publicstaticintgetDayIndex(Stringday) {
for(inti = 0; i < dayslist.length; i++)
if (day.equals(dayslist[i]))
returni;
return -1;
}
}