Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.io.BufferedReader;
- import java.io.FileReader;
- import java.io.File;
- public class runner{
- private static ArrayList<event> disorderedSchedule = new ArrayList<event>();
- private static ArrayList<event> orderedSchedule = new ArrayList<event>();
- private static ArrayList<guard> guards = new ArrayList<guard>();
- public static void getEvents(){
- try{
- BufferedReader reader = new BufferedReader(new FileReader(new File("shit.txt")));
- String line;
- while ((line = reader.readLine()) != null){
- disorderedSchedule.add(new event(line));
- }
- reader.close();
- } catch(Exception e){
- e.printStackTrace();
- }
- }
- public static void sortEvents(ArrayList<event> events){
- for (int i = 0; i < events.size(); i++){
- boolean isLowest = true;
- for (event e : events){
- if (events.get(i).getDate() > e.getDate()){
- isLowest = false;
- }
- }
- if (isLowest){
- orderedSchedule.add(events.get(i));
- events.remove(i);
- sortEvents(events);
- break;
- }
- }
- }
- public static void createGuards(){
- guard Guard = new guard(0);
- int id = 0;
- for (event Event: orderedSchedule){
- boolean isCreated = false;
- if (Event.getEvent().indexOf("#") != -1){
- id = Integer.parseInt(Event.getEvent().substring(Event.getEvent().indexOf("#")+1, Event.getEvent().indexOf("b")-1));
- for (guard temp : guards){
- if (temp.getID() == id){
- Guard = temp;
- isCreated = true;
- }
- }
- if (!isCreated){
- guards.add(new guard(id));
- }
- Guard.addSchedule(Event);
- }
- else{
- Guard.addSchedule(Event);
- }
- }
- }
- public static void main(String[] args){
- getEvents();
- sortEvents(disorderedSchedule);
- createGuards();
- ArrayList<Integer> minAsleepForGuard = new ArrayList<Integer>();
- for (guard Guard : guards){
- Guard.createDaySchedule();
- System.out.println("Guard ID: " + Guard.getID());
- ArrayList<boolean[]> sleep_schedule = Guard.calcSleepTime();
- int totalMinAsleep = 0;
- for (boolean[] day_sleep_schedule : sleep_schedule){
- for (int i = 0; i < day_sleep_schedule.length; i++){
- if (day_sleep_schedule[i]){
- System.out.print("#");
- totalMinAsleep++;
- }
- else{
- System.out.print(".");
- }
- }
- System.out.println();
- }
- minAsleepForGuard.add(totalMinAsleep);
- }
- System.out.println();
- int highest = 0;
- for (int i = 0; i < minAsleepForGuard.size(); i++){
- boolean isHighest = true;
- int j = 0;
- while (j < minAsleepForGuard.size()){
- if (minAsleepForGuard.get(j).intValue() > minAsleepForGuard.get(i).intValue()){
- isHighest = false;
- }
- j++;
- }
- if(isHighest){
- highest = minAsleepForGuard.get(i).intValue();
- }
- }
- guard highestGuard = new guard(0);
- for (int i = 0; i < minAsleepForGuard.size(); i++){
- if (minAsleepForGuard.get(i).intValue() == highest){
- highestGuard = guards.get(i);
- }
- }
- ArrayList<boolean[]> sleep_schedule = highestGuard.getSleep_Schedule();
- boolean[][] sleep_mat = new boolean[sleep_schedule.size()][sleep_schedule.get(0).length];
- for (int row = 0; row < sleep_mat.length; row++){
- boolean[] row_arr = sleep_schedule.get(row);
- for (int col = 0; col < sleep_mat[0].length; col++){
- sleep_mat[row][col] = row_arr[col];
- }
- }
- for (int col = 0; col < sleep_mat[0].length; col++){
- int count = 0;
- for (int row = 0; row < sleep_mat.length; row++){
- if (sleep_mat[row][col]){
- count++;
- }
- }
- System.out.println("Minute Num: " + col + " | Amount of times: " + count);
- }
- for (int i = 0; i < sleep_mat.length; i++){
- for (int j = 0; j < sleep_mat[0].length; j++){
- if (sleep_mat[i][j]){
- System.out.print("#");
- }
- else{
- System.out.print(".");
- }
- }
- System.out.println();
- }
- System.out.println("The Guard with the highest time asleep is Guard #" + highestGuard.getID());
- System.out.println("The time asleep is " + highest + " minutes");
- }
- }
- public class event{
- private final int date;
- private String date_str;
- private String event_str;
- public event(String event_str){
- this.event_str = event_str;
- String month = event_str.substring(event_str.indexOf("-")+1, event_str.indexOf("-")+3);
- String day = event_str.substring(event_str.indexOf(" ")-2, event_str.indexOf(" "));
- String minute = event_str.substring(event_str.indexOf(":")+1, event_str.indexOf("]"));
- String hour = event_str.substring(event_str.indexOf(" ")+1, event_str.indexOf(":"));
- if (Integer.parseInt(hour) == 0){
- hour = "24";
- }
- date = Integer.parseInt(month + day + hour + minute);
- date_str = "" + date;
- }
- public String getEvent(){
- return event_str;
- }
- public String getDate_str(){
- return date_str;
- }
- public int getDate(){
- return date;
- }
- }
- rivate ArrayList<event> schedule = new ArrayList<event>();
- private ArrayList<ArrayList<event>> days = new ArrayList<ArrayList<event>>();
- private ArrayList<boolean[]> sleep_schedule = new ArrayList<boolean[]>();
- private final int id;
- public guard(int id){
- this.id = id;
- }
- public ArrayList<boolean[]> calcSleepTime(){
- for (ArrayList<event> day : days){
- int start_time = 0, time_asleep = 0;
- boolean[] sleep = new boolean[60];
- for (event Event : day){
- if (Event.getEvent().indexOf("falls asleep") != -1){
- start_time = Event.getDate();
- }
- else if (Event.getEvent().indexOf("wakes up") != -1){
- time_asleep = Event.getDate()-start_time;
- for (int i = start_time%100; i < time_asleep%100; i++){
- sleep[i] = true;
- }
- }
- }
- sleep_schedule.add(sleep);
- }
- return sleep_schedule;
- }
- public void createDaySchedule(){
- ArrayList<event> day;
- int i = 0;
- while (i < schedule.size()){
- event Event = schedule.get(i);
- day = new ArrayList<event>();
- int j = 0;
- for (int k = i; k < schedule.size(); k++){
- event E = schedule.get(k);
- if (Event.getDate_str().substring(0, 4).equals(E.getDate_str().substring(0, 4))){
- day.add(E);
- j++;
- }
- }
- days.add(day);
- i += j;
- }
- }
- public ArrayList<boolean[]> getSleep_Schedule(){
- return sleep_schedule;
- }
- public ArrayList<event> getSchedule(){
- return schedule;
- }
- public void addSchedule(event Event){
- schedule.add(Event);
- }
- public int getID(){
- return id;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement