Advertisement
Guest User

Untitled

a guest
Dec 22nd, 2018
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.20 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.io.BufferedReader;
  3. import java.io.FileReader;
  4. import java.io.File;
  5.  
  6. public class runner{
  7.  
  8. private static ArrayList<event> disorderedSchedule = new ArrayList<event>();
  9. private static ArrayList<event> orderedSchedule = new ArrayList<event>();
  10. private static ArrayList<guard> guards = new ArrayList<guard>();
  11.  
  12. public static void getEvents(){
  13.  
  14. try{
  15.  
  16. BufferedReader reader = new BufferedReader(new FileReader(new File("shit.txt")));
  17. String line;
  18. while ((line = reader.readLine()) != null){
  19. disorderedSchedule.add(new event(line));
  20. }
  21. reader.close();
  22.  
  23. } catch(Exception e){
  24. e.printStackTrace();
  25. }
  26. }
  27.  
  28. public static void sortEvents(ArrayList<event> events){
  29.  
  30. for (int i = 0; i < events.size(); i++){
  31. boolean isLowest = true;
  32. for (event e : events){
  33. if (events.get(i).getDate() > e.getDate()){
  34. isLowest = false;
  35. }
  36. }
  37. if (isLowest){
  38. orderedSchedule.add(events.get(i));
  39. events.remove(i);
  40. sortEvents(events);
  41. break;
  42. }
  43. }
  44. }
  45.  
  46. public static void createGuards(){
  47. guard Guard = new guard(0);
  48. int id = 0;
  49. for (event Event: orderedSchedule){
  50. boolean isCreated = false;
  51. if (Event.getEvent().indexOf("#") != -1){
  52. id = Integer.parseInt(Event.getEvent().substring(Event.getEvent().indexOf("#")+1, Event.getEvent().indexOf("b")-1));
  53. for (guard temp : guards){
  54. if (temp.getID() == id){
  55. Guard = temp;
  56. isCreated = true;
  57. }
  58. }
  59. if (!isCreated){
  60. guards.add(new guard(id));
  61. }
  62. Guard.addSchedule(Event);
  63. }
  64. else{
  65. Guard.addSchedule(Event);
  66. }
  67. }
  68. }
  69.  
  70.  
  71. public static void main(String[] args){
  72.  
  73. getEvents();
  74. sortEvents(disorderedSchedule);
  75. createGuards();
  76.  
  77. ArrayList<Integer> minAsleepForGuard = new ArrayList<Integer>();
  78. for (guard Guard : guards){
  79. Guard.createDaySchedule();
  80. System.out.println("Guard ID: " + Guard.getID());
  81. ArrayList<boolean[]> sleep_schedule = Guard.calcSleepTime();
  82. int totalMinAsleep = 0;
  83. for (boolean[] day_sleep_schedule : sleep_schedule){
  84. for (int i = 0; i < day_sleep_schedule.length; i++){
  85. if (day_sleep_schedule[i]){
  86. System.out.print("#");
  87. totalMinAsleep++;
  88. }
  89. else{
  90. System.out.print(".");
  91. }
  92. }
  93. System.out.println();
  94. }
  95. minAsleepForGuard.add(totalMinAsleep);
  96. }
  97.  
  98. System.out.println();
  99.  
  100. int highest = 0;
  101. for (int i = 0; i < minAsleepForGuard.size(); i++){
  102.  
  103. boolean isHighest = true;
  104. int j = 0;
  105.  
  106. while (j < minAsleepForGuard.size()){
  107. if (minAsleepForGuard.get(j).intValue() > minAsleepForGuard.get(i).intValue()){
  108. isHighest = false;
  109. }
  110. j++;
  111. }
  112.  
  113. if(isHighest){
  114. highest = minAsleepForGuard.get(i).intValue();
  115. }
  116. }
  117.  
  118. guard highestGuard = new guard(0);
  119. for (int i = 0; i < minAsleepForGuard.size(); i++){
  120. if (minAsleepForGuard.get(i).intValue() == highest){
  121. highestGuard = guards.get(i);
  122. }
  123. }
  124.  
  125. ArrayList<boolean[]> sleep_schedule = highestGuard.getSleep_Schedule();
  126.  
  127. boolean[][] sleep_mat = new boolean[sleep_schedule.size()][sleep_schedule.get(0).length];
  128. for (int row = 0; row < sleep_mat.length; row++){
  129. boolean[] row_arr = sleep_schedule.get(row);
  130. for (int col = 0; col < sleep_mat[0].length; col++){
  131. sleep_mat[row][col] = row_arr[col];
  132. }
  133. }
  134.  
  135.  
  136. for (int col = 0; col < sleep_mat[0].length; col++){
  137. int count = 0;
  138. for (int row = 0; row < sleep_mat.length; row++){
  139. if (sleep_mat[row][col]){
  140. count++;
  141. }
  142. }
  143. System.out.println("Minute Num: " + col + " | Amount of times: " + count);
  144. }
  145.  
  146.  
  147.  
  148.  
  149. for (int i = 0; i < sleep_mat.length; i++){
  150. for (int j = 0; j < sleep_mat[0].length; j++){
  151. if (sleep_mat[i][j]){
  152. System.out.print("#");
  153. }
  154. else{
  155. System.out.print(".");
  156. }
  157. }
  158. System.out.println();
  159. }
  160.  
  161.  
  162. System.out.println("The Guard with the highest time asleep is Guard #" + highestGuard.getID());
  163. System.out.println("The time asleep is " + highest + " minutes");
  164.  
  165.  
  166. }
  167. }
  168.  
  169. public class event{
  170.  
  171. private final int date;
  172. private String date_str;
  173. private String event_str;
  174.  
  175. public event(String event_str){
  176.  
  177. this.event_str = event_str;
  178.  
  179. String month = event_str.substring(event_str.indexOf("-")+1, event_str.indexOf("-")+3);
  180. String day = event_str.substring(event_str.indexOf(" ")-2, event_str.indexOf(" "));
  181. String minute = event_str.substring(event_str.indexOf(":")+1, event_str.indexOf("]"));
  182. String hour = event_str.substring(event_str.indexOf(" ")+1, event_str.indexOf(":"));
  183.  
  184. if (Integer.parseInt(hour) == 0){
  185. hour = "24";
  186. }
  187.  
  188. date = Integer.parseInt(month + day + hour + minute);
  189.  
  190. date_str = "" + date;
  191.  
  192. }
  193.  
  194. public String getEvent(){
  195. return event_str;
  196. }
  197.  
  198. public String getDate_str(){
  199. return date_str;
  200. }
  201.  
  202. public int getDate(){
  203. return date;
  204. }
  205.  
  206. }
  207.  
  208. rivate ArrayList<event> schedule = new ArrayList<event>();
  209. private ArrayList<ArrayList<event>> days = new ArrayList<ArrayList<event>>();
  210. private ArrayList<boolean[]> sleep_schedule = new ArrayList<boolean[]>();
  211.  
  212. private final int id;
  213.  
  214. public guard(int id){
  215. this.id = id;
  216. }
  217.  
  218. public ArrayList<boolean[]> calcSleepTime(){
  219. for (ArrayList<event> day : days){
  220. int start_time = 0, time_asleep = 0;
  221. boolean[] sleep = new boolean[60];
  222. for (event Event : day){
  223. if (Event.getEvent().indexOf("falls asleep") != -1){
  224. start_time = Event.getDate();
  225. }
  226. else if (Event.getEvent().indexOf("wakes up") != -1){
  227. time_asleep = Event.getDate()-start_time;
  228. for (int i = start_time%100; i < time_asleep%100; i++){
  229. sleep[i] = true;
  230. }
  231. }
  232.  
  233. }
  234. sleep_schedule.add(sleep);
  235. }
  236. return sleep_schedule;
  237. }
  238.  
  239.  
  240. public void createDaySchedule(){
  241. ArrayList<event> day;
  242. int i = 0;
  243. while (i < schedule.size()){
  244. event Event = schedule.get(i);
  245. day = new ArrayList<event>();
  246. int j = 0;
  247. for (int k = i; k < schedule.size(); k++){
  248. event E = schedule.get(k);
  249. if (Event.getDate_str().substring(0, 4).equals(E.getDate_str().substring(0, 4))){
  250. day.add(E);
  251. j++;
  252. }
  253. }
  254. days.add(day);
  255. i += j;
  256. }
  257. }
  258.  
  259. public ArrayList<boolean[]> getSleep_Schedule(){
  260. return sleep_schedule;
  261. }
  262.  
  263. public ArrayList<event> getSchedule(){
  264. return schedule;
  265. }
  266.  
  267. public void addSchedule(event Event){
  268. schedule.add(Event);
  269. }
  270.  
  271. public int getID(){
  272. return id;
  273. }
  274. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement