Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.LinkedList;
- import java.util.List;
- import java.io.*;
- import java.util.Collections;
- import java.util.List;
- import java.util.stream.Collectors;
- public class F1Test {
- public static void main(String[] args) {
- //File file = new File("C:\\Users\\Public\\Documents\\IntelliJ Java\\src\\npKol1\\F1Test\\test.txt");
- F1Race f1Race = new F1Race();
- // try {
- // f1Race.readResults(new FileInputStream(file));
- // } catch (FileNotFoundException e) {
- // e.printStackTrace();
- // }
- f1Race.readResults(System.in);
- f1Race.printSorted(System.out);
- }
- }
- class F1Race {
- List<Driver> drivers;
- public F1Race(){}
- public void readResults(InputStream inputStream) {
- BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
- drivers = bufferedReader.lines()
- .map(s -> Driver.createDriver(s))
- .collect(Collectors.toList());
- // for (int i=0;i<drivers.size();i++){
- // System.out.println(drivers.get(i));
- // }
- }
- public void printSorted(OutputStream outputStream) {
- PrintWriter printWriter = new PrintWriter(outputStream);
- Collections.sort(drivers);
- for (int i=0;i<drivers.size();i++){
- int numberofSpaces = 12- drivers.get(i).getName().length();
- StringBuilder stringBuilder = new StringBuilder();
- System.out.print(i+1+". "+ drivers.get(i).getName());
- for (int j=0;j<numberofSpaces;j++){
- stringBuilder.append(" ");
- }
- System.out.println(stringBuilder.toString() + drivers.get(i).bestLap());
- }
- }
- }
- class Driver implements Comparable<Driver>{
- public String getName() {
- return name;
- }
- private String name;
- private List<Lap> laps;
- public Driver(List<Lap> laps, String name){
- this.laps = laps;
- this.name = name;
- }
- @Override
- public String toString() {
- StringBuilder stringBuilder = new StringBuilder();
- stringBuilder.append(name);
- stringBuilder.append(" ");
- for (int i=0;i<laps.size();i++){
- stringBuilder.append(laps.get(i));
- stringBuilder.append(" ");
- }
- return stringBuilder.toString();
- }
- public Driver(){
- }
- public static Driver createDriver(String s){
- String[] strings = s.split("\\s+");
- String name = strings[0];
- List<Lap> laps = new LinkedList<Lap>();
- laps.add(new Lap(strings[1]));
- laps.add(new Lap(strings[2]));
- laps.add(new Lap(strings[3]));
- return new Driver(laps,name);
- }
- @Override
- public int compareTo(Driver o) {
- return fastestTime(bestLap(),o.bestLap());
- }
- public Lap bestLap() {
- Lap lap = new Lap(laps.get(0).getMm(),laps.get(0).getSs(),laps.get(0).getMmm());
- for (int i=1;i<laps.size();i++){
- if (fastestTime(lap,laps.get(i)) == 1){
- lap = laps.get(i);
- }
- }
- return lap;
- }
- private int fastestTime(Lap lap, Lap lap1) {
- if (lap.getMm() < lap1.getMm()){
- return -1;
- }
- else if (lap.getMm() == lap1.getMm()&&lap.getSs() < lap1.getSs()){
- return -1;
- }
- if ( lap.getMm() == lap1.getMm() &&
- lap.getSs() == lap1.getSs() &&
- lap.getMmm() < lap1.getMmm()){
- return -1;
- }
- if ( lap.getMm() == lap1.getMm() &&
- lap.getSs() == lap1.getSs() &&
- lap.getMmm() == lap1.getMmm()){
- return 0;
- }
- return 1;
- }
- }
- class Lap {
- private final int mm;
- private final int ss;
- private final int mmm;
- public int getMm() {
- return mm;
- }
- public int getSs() {
- return ss;
- }
- public int getMmm() {
- return mmm;
- }
- public Lap(int mm, int ss, int mmm) {
- this.mm = mm;
- this.ss = ss;
- this.mmm = mmm;
- }
- public Lap(String string) {
- String[]strings = string.split(":");
- this.mm = Integer.parseInt(strings[0]);
- this.ss = Integer.parseInt(strings[1]);
- this.mmm = Integer.parseInt(strings[2]);
- }
- @Override
- public String toString() {
- return String.format("%01d:%02d:%03d",mm,ss,mmm);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement